2011-02-04 3 views
7

Tệp firebugx.js (được hiển thị bên dưới) kiểm tra cả hai cửa sổ window.console và! Console.firebug, sẽ phát hiện chính xác xem đã cài đặt firebug chưa. Tuy nhiên, kiểm tra đó không chứa đối tượng bảng điều khiển gốc trong các công cụ phát triển IE - nó sẽ ghi đè lên đối tượng điều khiển IE.Thay đổi firebugx.js để chứa các Công cụ dành cho Nhà phát triển IE

Ví dụ, nếu tôi bao gồm mã firebugx.js, thì ngoại lệ sau đây sẽ không xuất hiện trong IE console (nó sẽ chỉ được nuốt):

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

Câu hỏi: là gì là tốt nhất phương pháp tiếp cận để thích ứng với trình gỡ lỗi nhà phát triển IE? Có lẽ câu trả lời rõ ràng là chỉ đơn giản là bình luận ra kiểm tra firebugx.js khi gỡ lỗi trong IE. Có cách tiếp cận nào khác không?

tham khảo:

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

Trả lời

5

Tôi cho rằng việc sửa đổi sau đây để firebugx.js sẽ giải quyết vấn đề. Tôi chỉ xác định lại window.console nếu nó không tồn tại và sau đó tùy chọn xác định các hàm còn thiếu trên window.console. Tôi đã do dự để thay đổi firebugx.js, nhưng tôi không thể thực sự thấy một nhược điểm này. Đó là cách dễ nhất để nhanh chóng chuyển đổi giữa trình gỡ rối Firefox và 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() { } 
    } 
    } 
}