Published on 4 min read
Chrome DevTools - Things You Should Know about Console
Preface
The Chrome DevTools includes a built-in tool for interacting with the JavaScript engine – which is the Console.
In order to master the Console – we should know its supported capabilities as much as possible.
Accordingly, we’re going to reveal several tips regarding the Console.
Opening the Console
To open the Console as a panel – press on CTRL+SHIFT+J (Windows/Linux) or CMD + OPT + J (Mac):

To open the Console as a drawer – press on CTRL + ` (Backtick):

Selecting Elements
We can execute querySelectorAll for selecting all elements by a selector using $$(selector):

Note: If we want to execute querySelector, we should use $(selector).
Last Evaluated Expression
To access the last evaluated expression, we can use $_:

Note: We can apply the appropriate methods on that expression, for instance – if it’s a DOM element, we’re able to invoke innerHTML and print the result into the Console.
Last Five Elements
In case that we traverse the DOM manually, we’ve the ability to access the last five watched elements. In order to do that, we can use the commands: $0, $1, $2, $3 and $4. $0 returns the current selected element whereas $1–$4 return the last historical elements respectively:

Copy to Clipboard
Sometimes we need to copy the string representation of an object to the clipboard:

Note: In previous versions of DevTools, we should have used copy(JSON.stringify(object)) in order to convert the JSON to a string. However, it isn’t needed anymore.
Registered Event Listeners
Printing the registered event listeners for an object is pretty easy because of getEventListeners(object):

Note: Assuming there is a button with click event in the page.
Monitoring a Function
We can track invocations for a function with the passed arguments using monitor(function):

Note: To stop the tracking – use unmonitor(function).
Monitoring an Events
We can track an events of an object using monitorEvents(object, [events]). The first argument is the actual specified object whereas the second is the specified array of events (or a single event).
Let’s listen and simulate clicks on the Window object:

A few points:
- To stop the tracking – use
unmonitorEvents(object, [events]). - We could use
unmonitorEvents(object)to eliminate the tracking for all events.
Measuring Time
Measuring time for a dedicated action could be performed simply when invoking console.time(text) before the action and console.timeEnd(text) thereafter:

Styling Console Output
Applying CSS on the output text is performed using the %c string, which indicates the beginning of the styled text. The second parameter is a string of the specified CSS properties.
Here’s an example:

Hiding Network Messages
Network messages may appear in the Console in case of an error of a resource, blocking scripts and so on. From time to time, we don’t care about these messages and we wish to hide them:

Editing an Element
We can edit the content of an element directly through the Console:

Note: The element could be edited as HTML as well.
References
Check out the following links for more information:
You’re welcome to share:
Enjoyed this post?
I’d love for you to follow me and join my newsletter.
Related Posts

ECMAScript - Introducing Deferred Module Evaluation with import defer
8 min read
Introducing the “import defer” proposal, a new ECMAScript import form that loads and links modules eagerly while deferring their evaluation until a namespace property is first accessed - currently at stage 3 in the TC39 process.

ECMAScript - Introducing BigInt Primitive in ES2020 (ES11)
5 min read
Introducing the "BigInt" proposal, a new primitive of arbitrary precision integers, which has been reached stage 4 in the TC39 process and is included in the language specification of 2020 - the 11th edition.

ECMAScript - Introducing Dynamic Imports in ES2020 (ES11)
6 min read
Introducing the "Dynamic Import" proposal, arriving with new import() keyword enabling to load a module on demand at runtime, which has been reached stage 4 in the TC39 process and is included in the language specification of 2020 - the 11th edition.