2011-02-04 17 views
7

için Firebugx.js Altering firebugx.js (aşağıda gösterilen) dosyası, firebug'un yüklü olup olmadığını doğru olarak algılayan window.console ve! ​​Console.firebug öğelerini denetler. Ancak, bu denetim IE geliştirici araçlarında yerel konsol nesnesini barındırmaz - IE konsolu nesnesinin üzerine yazar. Ben firebugx.js kodu, daha sonra şu istisna (sadece yuttu alacak) IE konsolunda görünmez eklersenizIE Developer Tools

Örneğin,:

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

Soru: iyi nedir IE geliştirici hata ayıklayıcısını barındırmak için yaklaşım? Belki de açık cevap, IE'de hata ayıklama yaparken firebugx.js denetimini basitçe açıklamaktır. Başka yaklaşımlar var mı?

Referans:

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

cevap

5

Ben firebugx.js için aşağıdaki modifikasyon sorunu çözmek herhalde. Varsa sadece window.console ifadesini yeniden tanımlarım ve sonra isteğe bağlı olarak window.console'daki eksik işlevleri tanımlarım. Firebugx.js'yi değiştirmek konusunda tereddütlüdüm, ancak bunun bir dezavantajını gerçekten göremiyorum. Firefox ve IE hata ayıklayıcıları arasında hızla geçiş yapmanın en kolay yolu budur.

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