Comandos Útiles en la Consola
El panel de Consola ofrece comandos especiales y funciones integradas que potencian significativamente tus capacidades de depuración e interacción con la página web. Estos comandos van más allá del API estándar de console y proporcionan accesos directos a funcionalidades avanzadas.
Variables de referencia rápida
La consola proporciona variables predefinidas para acceder rápidamente a elementos importantes:
$, $$ y otros selectores
// Equivalente a document.querySelector()
$('h1'); // Devuelve el primer elemento h1
// Equivalente a document.querySelectorAll() pero devuelve array
$$('p'); // Devuelve array con todos los párrafos
// Último elemento seleccionado en el panel Elements
$0
// Penúltimo elemento seleccionado en el panel Elements
$1
// Hasta $4 para los 5 elementos seleccionados más recientes
Estas variables facilitan la interacción con elementos DOM sin escribir selectores completos.
$_
Proporciona acceso al resultado de la última expresión evaluada:
[1, 2, 3, 4].filter(n => n % 2 === 0)
// [2, 4]
$_.length
// 2
Útil para continuar trabajando con resultados previos sin necesidad de almacenarlos en variables.
Comandos de utilidad global
clear()
Limpia el contenido del panel de consola:
clear(); // Equivalente a console.clear() o al ícono de papelera
copy()
Copia el argumento proporcionado al portapapeles:
// Copia el HTML del primer párrafo al portapapeles
copy($('p').innerHTML);
// Copia un objeto como JSON formateado
copy({nombre: "Juan", edad: 30});
Extremadamente útil para transferir datos entre la consola y editores de código.
debug() y undebug()
Establece un punto de interrupción en una función:
function calcularTotal() {
// Código de la función
}
debug(calcularTotal); // Se detendrá cada vez que se llame a esta función
undebug(calcularTotal); // Elimina el punto de interrupción
Alternativa rápida a establecer breakpoints en el panel Sources.
monitor() y unmonitor()
Registra las llamadas a una función específica:
function enviarDatos(datos) {
// Código de la función
}
monitor(enviarDatos); // Muestra cuando se llama y con qué argumentos
unmonitor(enviarDatos); // Detiene el monitoreo
Útil para rastrear cuándo y cómo se invoca una función sin modificar su código.
dir() y dirxml()
Muestra una representación interactiva del objeto o elemento DOM:
// Vista de propiedades del objeto
dir(document.body);
// Vista de la estructura DOM como XML
dirxml(document.body);
Proporciona diferentes perspectivas para examinar objetos complejos.
Comandos para eventos
monitorEvents() y unmonitorEvents()
Registra eventos específicos en un elemento:
// Monitorear todos los eventos de clic en el body
monitorEvents(document.body, 'click');
// Monitorear múltiples tipos de eventos
monitorEvents(document.getElementById('miInput'), ['focus', 'blur', 'input']);
// Monitorear categorías de eventos
monitorEvents(window, ['mouse', 'key']);
// Detener monitoreo
unmonitorEvents(document.body);
Categorías disponibles:
mouse: click, dblclick, mousedown, mouseup, etc.key: keydown, keyup, keypresstouch: touchstart, touchend, touchmovecontrol: scroll, resize, zoom, focus, blur
Comandos de inspección
inspect()
Navega directamente al elemento en el panel Elements:
inspect($('header')); // Selecciona el header en el panel Elements
También funciona con objetos JavaScript para inspeccionarlos en el panel Sources.
getEventListeners()
Muestra todos los event listeners asociados a un elemento:
getEventListeners(document.getElementById('miBoton'));
// Muestra {click: Array(2), mouseover: Array(1)}
Invaluable para depurar interacciones complejas y encontrar handlers duplicados.
Comandos de manipulación DOM
$(selector, [startNode])
Versión mejorada de document.querySelector():
// Seleccionar dentro de un contexto específico
$('a', $('.content'));
$x(path)
Ejecuta una consulta XPath:
// Encontrar todos los párrafos que contienen la palabra "importante"
$x("//p[contains(text(),'importante')]");
Útil para selecciones DOM basadas en contenido o estructura jerárquica.
Comandos de tabla
table()
Muestra datos en formato tabular:
// Datos completos
table(documet.querySelectorAll('img'));
// Especificando columnas
table(users, ['name', 'email']);
Mejora la visibilidad de conjuntos de datos y objetos similares.
Comandos para almacenamiento
queryObjects(Constructor)
Encuentra instancias de una clase específica:
// Encontrar todas las instancias de Map
queryObjects(Map);
// Encontrar elementos DOM de un tipo específico
queryObjects(HTMLImageElement);
queryStorage() y clearStorage()
Interactúa con localStorage y sessionStorage:
// Consultar almacenamiento
queryLocalStorage();
querySessionStorage();
// Limpiar almacenamiento
clearLocalStorage();
clearSessionStorage();
Comandos de rendimiento
profile() y profileEnd()
Inicia y detiene el perfilador de CPU:
profile('Optimización');
// Código a perfilar
profileEnd('Optimización');
Los resultados aparecen en el panel Performance.
keys() y values()
Obtiene las claves o valores de un objeto:
keys(objeto);
values(objeto);
Alternativa concisa a Object.keys() y Object.values().
Comandos de depuración asíncrona
monitorAsync() y unmonitorAsync()
Rastrea la ejecución de funciones asincrónicas:
async function cargarDatos() {
// Código asíncrono
}
monitorAsync(cargarDatos);
unmonitorAsync(cargarDatos);
Particularmente útil para depurar cadenas de promesas y funciones async/await.
Comandos avanzados
$_
Además de proporcionar el último resultado, puedes sobrescribirlo:
$_ = {miDato: "personalizado"};
$_
// {miDato: "personalizado"}
$i
En algunos navegadores, proporciona acceso a APIs de extensión para la consola:
$i.functionalities
// Muestra las capacidades adicionales disponibles
Comandos personalizados
Puedes definir tus propios comandos de consola:
// Crear un comando personalizado para contar elementos
function contarElementos(selector) {
return document.querySelectorAll(selector).length;
}
// Usar en la consola
contarElementos('div');
// 42
Estos comandos personalizados estarán disponibles durante toda la sesión, a menos que recargues la página sin conservar los logs.
Dominar estos comandos útiles de la consola mejorará significativamente tu eficiencia como desarrollador, permitiéndote interactuar con la página web de manera más directa y resolver problemas con mayor rapidez.