qué - Javascript que detecta Firebug?
qué es js (7)
Respuesta original:
Compruebe el objeto de la console
(creado solo con Firebug), como este:
if (window.console && window.console.firebug) {
//Firebug is enabled
}
Actualización (enero de 2012):
Los desarrolladores de Firebug han decidido eliminar window.console.firebug
. Todavía puedes detectar la presencia de Firebug escribiendo pato como
if (window.console && (window.console.firebug || window.console.exception)) {
//Firebug is enabled
}
o varios otros enfoques como
if (document.getUserData(''firebug-Token'')) ...
if (console.log.toString().indexOf(''apply'') != -1) ...
if (typeof console.assert(1) == ''string'') ...
pero, en general, no debería haber necesidad de hacerlo.
¿Cuál es una forma segura de detectar si un usuario tiene habilitado Firebug?
A partir de la versión 1.9.0 de Firebug, console.firebug
ya no se define debido a problemas de privacidad; ver notas de la versión , informe de errores . Esto rompe los métodos mencionados anteriormente. De hecho, cambia la respuesta a la pregunta de Allan a "no hay forma"; si hay otra forma, se considera un error.
En su lugar, la solución es verificar la disponibilidad de console.log
o lo que sea que quiera usar o reemplazar.
Aquí hay una sugerencia para reemplazar el tipo de código que David Brockman presenta arriba, pero que no elimina ninguna función existente.
(function () {
var names = [''log'', ''debug'', ''info'', ''warn'', ''error'', ''assert'', ''dir'', ''dirxml'',
''group'', ''groupEnd'', ''time'', ''timeEnd'', ''count'', ''trace'', ''profile'', ''profileEnd''];
if (window.console) {
for (var i = 0; i < names.length; i++) {
if (!window.console[names[i]]) {
window.console[names[i]] = function() {};
}
}
} else {
window.console = {};
for (var i = 0; i < names.length; i++) {
window.console[names[i]] = function() {};
}
}
})();
Actualmente, window.console.firebug ha sido eliminado por la última versión de Firebug. porque Firebug es un depurador de JavaScript basado en extensión, que definió una nueva función u objeto en window.console. Por lo tanto, la mayoría de las veces, solo puede usar estas nuevas funciones definidas para detectar el estado de funcionamiento de Firebug.
como
if(console.assert(1) === ''_firebugIgnore'') alert("firebug is running!");
if((console.log+'''''''').indexOf(''return Function.apply.call(x.log, x, arguments);'') !== -1) alert("firebug is running!");
Puedes probar estos enfoques en cada firebug.
¡Los mejores deseos!
Puede ser imposible de detectar.
Firebug tiene varias pestañas, que se pueden desactivar por separado, y ahora no están habilitadas de forma predeterminada.
GMail tal como está solo puede decir si tengo habilitada la pestaña "consola". Investigar más allá de esto probablemente requeriría una elusión de seguridad, y no desea ir allí.
Puede usar algo como esto para evitar que las llamadas de Firebug en su código causen errores si no está instalado.
if (!window.console || !console.firebug) {
(function (m, i) {
window.console = {};
while (i--) {
window.console[m[i]] = function () {};
}
})(''log debug info warn error assert dir dirxml trace group groupEnd time timeEnd profile profileEnd count''.split('' ''), 16);
}
Si firebug está habilitado, window.console no estará indefinido. console.firebug devolverá el número de versión.
Tenga en cuenta que Chrome window.console también devuelve true o [ Object console]
.
Además, verificaría si Firebug está instalado con
if (window.console.firebug !== undefined) // firebug is installed
A continuación se muestra lo que obtengo en Safari y Chrome, no se instaló firebug.
if (window.console.firebug) // true
if (window.console.firebug == null) // true
if (window.console.firebug === null) // false
Los operadores Is-True e Is-Not obviamente escriben coerción, lo cual debe evitarse en JavaScript.