2013-06-05 34 views
6

Trong khi nó có vẻ như rất nhiều người dường như hav được gặp rắc rối với điều này trên Stack Overflow, tôi đã chưa nhìn thấy một mô tả về lý do tại sao nó đã đi sai (1, 2, 3)jQuery getScript vấn đề

My mã (cho mục đích thử nghiệm):

jQuery.getScript("res/fader.js", function() { alert("loaded"); }); 

hoạt động hoàn hảo trong Chrome (16). Trong Firefox (11) bảng điều khiển firebug cho thấy kịch bản được yêu cầu và đáp ứng mong đợi (bao gồm cả mimetype của ứng dụng/javascript). Nhưng không tỉnh táo. Không có lỗi. Không có gì.

Nếu sau đó tôi cố gắng tham khảo nội dung nào đó trong tập lệnh đã được tải, nó vẫn chưa được xác định (đây là vài giây sau sự kiện tải và sau khi bảng điều khiển hiển thị tập lệnh đã được truy xuất).

cập nhật

Tôi đang sử dụng jQuery 1.9.1

+0

bạn cần tham chiếu nó bằng '.find ('loaded_dom')' – karthikr

+0

bất kỳ lỗi nào trong bảng điều khiển của trình duyệt –

+1

Bạn đang sử dụng phiên bản jQuery nào? Firefox 11 hiện có 10 phiên bản đã lỗi thời và Chrome 16 là 11 phiên bản. Không chắc chắn nếu điều này sẽ là nguyên nhân nếu vấn đề, nhưng nếu bạn đang sử dụng jQuery 2.x nó có thể là giá trị cho 1.x một shot chỉ trong trường hợp. –

Trả lời

1

Kudos và nhờ uncollected (thêm một câu trả lời & Tôi sẽ đánh dấu nó như là chấp nhận) thêm hander ngoại lệ, tôi thấy vấn đề ...

Một ngoại lệ đã xảy ra - được jQuery xử lý âm thầm. Việc thêm trình xử lý thông qua getScript() cho thấy vấn đề là "phía bên tay trái không hợp lệ". Thật không may ngoại lệ này không nói nơi xảy ra lỗi. Sau đó, tôi đã thử một phương pháp khác để tải tập lệnh (tạo phần tử tập lệnh và gắn nó vào phần thân) có nghĩa là trình xử lý mặc định trong trình duyệt đã được kích hoạt đã cho tôi số dòng và bit mã vi phạm:

this=null; 

Điều này nhằm mục đích dọn dẹp đối tượng đối tượng, để tránh rò rỉ bộ nhớ và hoạt động trong Chrome, nhưng không phải trong Firefox.