2011-02-04 72 views
7

firebugx.js文件(如下所示)將同時檢查!window.console和!console.firebug,它可以正確檢測是否安裝了Firebug。但是,該檢查不支持IE開發人員工具中的本機控制檯對象 - 它會覆蓋IE控制檯對象。更改firebugx.js以適應IE開發人員工具

例如,如果我包括firebugx.js代碼,那麼下面的異常將不會出現在IE瀏覽器的控制檯(它只會得到吞下):

function foo() { 
    try { 
     throw "exception!!!"; 
    } 
    catch (e) { 
     console.error(e); 
    } 
    } 

問題:什麼是最好的適應IE開發人員調試器的方法?也許顯而易見的答案是在IE中調試時僅僅註釋掉firebugx.js檢查。還有其他方法嗎?

參考:

firebugx.js

if (!window.console || !console.firebug) 
{ 
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 

    window.console = {}; 
    for (var i = 0; i < names.length; ++i) 
     window.console[names[i]] = function() {} 
} 

回答

5

我想作以下修改,以firebugx.js可以解決這個問題。我只重新定義window.console,如果它不存在,然後可以選擇定義window.console上的缺少的功能。我對修改firebugx.js猶豫不決,但我不能真正看到這個缺點。這是在Firefox和IE調試器之間快速切換的最簡單方法。

firebugxCustom.js

if (!window.console) { 
    window.console = {}; 
} 
if (!window.console.firebug) { 
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 

    for (var i = 0; i < names.length; ++i) { 
    if (!window.console[names[i]]) { 
     window.console[names[i]] = function() { } 
    } 
    } 
}