【问题标题】:Detect firebug opening and closing检测萤火虫打开和关闭
【发布时间】:2011-04-14 07:03:42
【问题描述】:

有没有人有办法检测 Firebug 的打开和关闭。

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

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

但这只会在页面加载时检测到萤火虫控制台。我要做的是在firebug未打开的页面上,检测firebug控制台的打开。

我尝试了以下方法,但没有成功

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

非常感谢任何帮助。

马特

【问题讨论】:

  • 我正在将 Backfire 集成到 CMS blog.quplo.com/2010/08/… 中,并且希望仅在 firebug 实际打开时显示 Save CSS Changes 按钮。

标签: javascript firefox firebug


【解决方案1】:

只是......你不能。 firebug 窗口不仅仅是页面上的另外几个 div 元素。

【讨论】:

    【解决方案2】:

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

    换句话说,您只能从页面内检测控制台是否已启用。但就您的目的而言,这应该足够了。

    如果用户为某个页面关闭了 Firebug,我们应该删除控制台属性。我不知道我们是否真的这样做了。

    【讨论】:

    • 嗨,约翰。你的最后一句话可能是最尖锐的。是的,我可以在加载时检查 window.console,但它看起来不像 window.console 已更新(在打开 Firebug 时创建,或者在关闭时删除),这是我想要检测的。那么我是不是就没有办法检测到,给定一个关闭了萤火虫的页面,当萤火虫打开时?反之亦然?除了刷新页面。
    【解决方案3】:

    Firebug 会覆盖windowconsole 属性,因此您可以像这样检测它:

    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 关闭时这个对象仍然存在,所以你无法检测到它。也许还有其他方法,但我在 ATM 上找不到。

    详情: 无法从文档脚本访问 Firebug 的执行上下文,因此我们仅限于等待 Firebug 访问 window 的某些属性,而当您关闭 Firebug 时似乎不会发生这种情况。以下是关机期间的一些事件,拍摄于FBTrace

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

    【讨论】:

      【解决方案4】:

      如果 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】:

        你可以做到

        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.');
            }
        }
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-24
            相关资源
            最近更新 更多