2010-09-19 100 views
2

有沒有人有辦法檢測螢火蟲的開啓與關閉。檢測螢火蟲的開合關係

我知道你可以做到以下幾點:

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

但這隻能檢測在頁面加載Firebug控制檯。我想要做的是在螢火蟲未打開的頁面上檢測螢火蟲控制檯的開啓。

我試過以下,但沒有運氣

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

任何幫助極大的讚賞。

馬特

+0

你爲什麼這樣做? – 2010-09-19 09:28:51

+0

我正在將Backfire整合到一個CMS中http://blog.quplo.com/2010/08/backfire-save-css-changes-made-in-firebug/,並希望在螢火蟲時只顯示Save CSS Changes按鈕實際上是開放的。 – 2010-09-19 09:30:42

回答

2

只是..你不能。螢幕窗口不只是您頁面上另一對div元素。

2

Firebug window.console對象是在執行頁面中的第一個Javascript之前創建的,但僅當第一個JS之前的Firebug處於活動狀態並且該用戶已啓用Firebug控制檯面板時才被激活。

換句話說,從頁面內您只能檢測到控制檯是否啓用。但爲了你的目的,這應該夠了。

如果用戶關閉頁面的Firebug,我們應該刪除控制檯屬性。我不知道我們是否真的這樣做。

+0

嗨,約翰。你最後一句話可能是最有意義的一句話。是的,我可以檢查窗口。控制檯上的負載,但它看起來不像window.console更新(或者在打開Firebug時創建,或者關閉時刪除),這正是我想要檢測的。那麼我是否正確呢,當螢火蟲被打開時,給定一個關閉了螢火蟲的頁面,沒有辦法檢測到?反之亦然?除了刷新頁面。 – 2010-09-20 12:03:33

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

螢火蟲覆蓋的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; 
    } 
}); 

的問題是,保持該對象時螢火蟲關閉,所以你無法檢測到。也許還有其他的方式,但我找不到ATM。

詳情: 這不是可以從文件的腳本訪問Firebug的執行環境,所以我們限制在等待螢火蟲訪問某些window的屬性,這似乎並沒有發生,當你接近螢火蟲。下面是一些停機期間發生的事件,與FBTrace採取:

Firebug stack trace

我搜索堆棧跟蹤爲「泄漏」到window,但找不到任何。

1

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

如果您只想檢測Firebug開啓/關閉,您可以檢查窗口調整大小/模糊事件。