2010-08-29 31 views
9

Được rồi, tôi gặp sự cố lạ này trong Firefox. Tôi nhập vào giao diện điều khiển của Firebug

$ == jQuery 

Thỉnh thoảng nó hiển thị đúng và đôi khi sai. Tệp chỉ là một tài liệu HTML trống với một thẻ script bao gồm jQuery. Tôi làm mới trang, nhấp vào "Chạy" trong bảng điều khiển, và một lần nữa, đôi khi nó trả về true, đôi khi sai.

Trên dịp mà nó trả về false, $.toString() cho

function anonymous() { 
    return window.console.notifyFirebug(arguments, "$", "firebugExecuteCommand"); 
} 

Bây giờ đây là điều lạ. Khi $ == jQuery cung cấp sai khi sử dụng bảng điều khiển Firebug, nếu tôi truy cập thanh địa chỉ và nhập javascript:alert($ == jQuery);, cảnh báo sẽ đúng!

Có ai có ý tưởng gì đang xảy ra ở đây không? Đó là (đôi khi) rối tung lên gỡ lỗi của tôi.

+0

Dường như Firebug sử dụng biểu tượng $ cho thứ gì đó. Chỉ là một ý nghĩ - không chắc liệu nó có hợp lệ hay không. –

+0

Nó có thể là 'noconflict' hoặc một cái gì đó. Nếu bạn cố gắng làm '$ === jQuery' mà không jQuery thực sự nạp, bạn sẽ nhận được một lỗi tham chiếu ngoài dòng lệnh' false' –

+0

Firebug liên kết '$' với [một hàm gọi 'getElementById'] (http://fbug.googlecode.com/svn/trunk/content/firebug/commandLineAPI.js). Tôi không thể nghĩ ra một lý do thực tế tốt mà có một sự pha trộn giữa hai mặc dù, trừ khi bạn đang chạy đoạn mã trước khi kịch bản jQuery tải đầy đủ (nhưng điều này dường như không cho tôi). –

Trả lời

3

Có một hàm gốc được xác định bởi firebug gán $ cho getElementById. Tôi không nghĩ rằng bạn có thể giải quyết "lỗi" này mà không nâng cấp lên phiên bản Firebug mới hơn có khả năng loại bỏ sự cố hoặc gán theo cách thủ công $ = jQuery.

Nó có thể là kết quả của jQuery có thể đã được lưu trữ và Firebug $ ghi đè nó khi nó cháy quá nhanh, hoặc ngược lại .. chỉ là một số lỗi lạ liên quan đến tốc độ gán + bộ nhớ đệm.

0

Có thể firebug đang sử dụng $ cho điều gì đó và có điều kiện đua giữa jquery và firebug để đặt biến đó, bạn phải xem xét rằng rất nhiều thư viện javascript sử dụng tên biến đó, nếu tôi không phải là nguyên mẫu sai của họ

0

Bạn nên sử dụng instanceof thay vì kiểm tra bình đẳng.

Vì lý do tại sao chúng tôi có khả năng là firebug đã xác định $ trong phạm vi địa phương.

0

Có thể có nhiều thứ khác sử dụng $ làm biểu tượng hàm/biến. jQuery chỉ là một trong số đó. Firebug có thể ghi đè $.

Các vấn đề liên quan