extension - depurar javascript chrome
¿Cuál es la forma correcta de escribir en la consola de scripts(console.log) en IE? (4)
la consola es para firebug.
Tendrá que instalar Firebug lite para habilitar la escritura en la consola en IE.
Tengo este sustituto para console.log
definido en document.ready()
:
$(document).ready(function(){
console.log("doc ready");
if(typeof console === "undefined"){
console = { log: function() { } };
}
}
Pensé que se suponía que IE tenía esta función disponible, pero cuando incluyo la llamada anterior
console.log("doc ready");
La salida aparece en la consola de Firefox pero no en IE; de hecho, la ejecución del script de IE se interrumpe por completo en este punto.
¿Cuál es la forma correcta de escribir en la consola en IE?
Esto es lo que utilizo para conmutar por error a Firebug Lite si no hay una consola disponible. Esto garantiza que obtendrás una consola de alguna descripción, aunque todas funcionan de forma ligeramente diferente, así que ten cuidado.
function attachConsole(force) {
if(force || typeof console === "undefined"){
var head= document.getElementsByTagName(''head'')[0];
var script= document.createElement(''script'');
script.type= ''text/javascript'';
script.src= ''http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'';
head.appendChild(script);
return true;
}
return false;
}
IE6 / 7 no tiene una consola por defecto.
De hecho, Firefox tampoco lo hace, ya que lo proporciona un complemento llamado Firebug; Si usa una copia de Firefox sin Firebug instalado, obtendrá errores al intentar llamar a la console
la misma manera que con IE.
IE8 / 9 tiene una consola.
Chrome y Safari tienen un objeto de consola incorporado, pero no cuente con que funcione exactamente de la misma forma que Firebug o IE8.
Tenga en cuenta que en todos los navegadores, el objeto de la consola puede no crearse a menos que la ventana de depuración esté abierta. Esto significa que su código con una llamada de console.log
podría fallar en cualquier navegador, no solo en IE.
En su ejemplo, esencialmente está creando un objeto de console
ficticia si no existe, que claramente pretende evitar que los navegadores sin una consola se bloqueen si llama a console.log()
. Pero está llamando a console.log()
antes de que se ejecute ese código, por lo que los navegadores sin una consola se bloquearán en esa línea. Por lo tanto, debe mover su console.log("doc ready");
línea hacia abajo para que venga después del bit que detecta si existe la console
.
Si desea que la consola exista para IE, existe una versión de Firebug llamada Firebug Lite , que se puede ejecutar en cualquier navegador. Si ejecuta esto, creará el objeto de la console
.
Sin embargo, tenga en cuenta que solo se puede ejecutar después de que la página se haya cargado, por lo que nunca podrá mostrar los mensajes de la consola en la función de documento preparado. Además, es posible que no pueda crear el objeto de la consola si ya existe, por lo que el código que tiene en el documento listo para crear un objeto de consola ficticia puede impedir que Firebug Lite funcione correctamente.
Finalmente, si bien la utilización de la consola es fantástica para fines de depuración, asegúrese de no enviar nunca un código en vivo con llamadas a console.log
, incluso si planea usarlos solo para fines de depuración más adelante. Como ya ha visto, pueden hacer que un navegador deje de ejecutar el código si no tiene un objeto de consola, y habrá muchos usuarios en vivo que no lo tienen, así que tenga cuidado de no causar problemas a los usuarios en vivo. : lo mejor es asegurarse de que siempre haya eliminado todas sus llamadas a la consola antes de enviar su código.
La ejecución del script se interrumpe debido a un orden incorrecto de las instrucciones, esto puede ser mejor:
$(document).ready(function(){
if(typeof console === "undefined"){
console = { log: function() { } };
}
console.log("doc ready");
}
Si accede primero a la consola antes de verificar si existe (y si la crea, si no), se producirá un error.