2011-02-04 9 views
7

Il file firebugx.js controlla (sia mostrato sotto)! Window.console e! Console.firebug, che rileva correttamente se è installato firebug. Tuttavia, tale controllo non supporta l'oggetto console nativo negli strumenti di sviluppo di IE - sovrascrive l'oggetto console IE.Modifica di firebugx.js per ospitare gli strumenti di sviluppo di IE

Per esempio, se includo il codice firebugx.js, quindi la seguente eccezione non apparirà nella console IE (sarà solo ottenere ingestione):

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

Domanda: Qual è la migliore approccio per ospitare il debugger degli sviluppatori di IE? Forse la risposta ovvia è semplicemente commentare il controllo firebugx.js durante il debugging in IE. Ci sono altri approcci?

Riferimento:

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() {} 
} 

risposta

5

suppongo la seguente modifica al firebugx.js avrebbe risolto il problema. Ridefinisco solo window.console se non esiste e quindi opzionalmente definire le funzioni mancanti su window.console. Ero titubante a modificare firebugx.js, ma non riesco davvero a vedere un lato negativo di questo. È il modo più semplice per passare rapidamente tra i debugger di Firefox e 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() { } 
    } 
    } 
}