检测萤火虫的开启和关闭

时间:2010-09-19 09:22:20

标签: javascript firefox firebug

是否有人有办法检测Firebug的开启和关闭。

我知道你可以做到以下几点:

if (window.console && window.console.firebug) {
  //Firebug is enabled
}

但这仅在页面加载时检测到firebug控制台。我想做的是在一个没有打开萤火虫的页面上,检测到萤火虫控制台的开启。

我尝试了以下内容,但没有运气

setInterval(function(){
  if(window.console && window.console.firebug){
    ...
  else
    ...
}, 1000);

非常感谢任何帮助。

马特

6 个答案:

答案 0 :(得分:2)

简直......你不能。 firebug窗口不仅仅是页面上的另一对div元素。

答案 1 :(得分:2)

Firebug window.console对象是在页面中第一个Javascript执行之前创建的,但前提是Firebug在第一个JS之前对页面处于活动状态,并且用户启用了Firebug控制台面板。

换句话说,在页面中,您只能检测控制台是否已启用。但是为了你的目的应该足够了。

如果用户关闭页面的Firebug,我们应该删除控制台属性。我不知道我们是否真的那么做。

答案 2 :(得分:1)

你可以把它作为

var t = setTimeout("CheckFireBug()",10000);
function CheckFireBug() {
    var t = setTimeout("CheckFireBug()",10000);
    if (window.console && window.console.firebug) {
        //Firebug is enabled
        console.debug('Firebug is enabled.');
    } else {
        //Firebug is not enabled
        console.debug('Firebug is not enabled.');
    }
}

答案 3 :(得分:1)

Firebug会覆盖console的{​​{1}}属性,因此您可能会这样检测到它:

window

问题是当Firebug关闭时此对象仍然存在,因此您无法检测到该对象。也许有其他方法,但我找不到它。

<强>详细信息: 从文档脚本访问Firebug的执行上下文是不可能的,因此我们只能等待Firebug访问某些var _console = window.console; Object.defineProperty(window, 'console', { set: function (x) { if (x.exception) { // check if this is actually Firebug, and not the built-in console alert('Firebug on'); } _console = x; }, get: function () { return _console; } }); 的属性,这在关闭Firebug时似乎不会发生。以下是关机期间的一些事件,使用FBTrace

Firebug stack trace

我在堆栈跟踪中搜索了“泄漏”到window,但找不到任何内容。

答案 4 :(得分:1)

如果firebug正在运行,

console.table()将返回“_firebugIgnore”。

if( window.console && (console.firebug || 
   console.table && /firebug/i.test(console.table()) ))
{
    alert('Firebug is running');
}else{
    alert('Firebug is not found');
}

答案 5 :(得分:0)

如果您只想检测Firebug开启/关闭,您可以检查窗口调整大小/模糊事件。