2011-10-19 35 views
6

Tôi có một bookmarklet tải một div vào một trang hiện tại và đặt một iframe bên trong nó. Bookmarklet hoạt động như một giấc mơ trong tất cả các trình duyệt ngoại trừ IE9. Thậm chí hoạt động trong các phiên bản trước của IE.

Tôi đang sử dụng khuôn khổ bookmarklet sau:

http://idc.anavallasuiza.com/project/bookmarklets 

Một số ai khác đã có một vấn đề tương tự ở đây (không liên quan đến bookmarklets):

https://forum.jquery.com/topic/retrieved-html-data-type-with-jquery-ajax-in-ie9-scripts-tags-sources-could-not-be-loaded 

Cho đến nay tôi hiểu rằng jQuery của bookmarklet của tôi không tải đúng trong IE9.

Dấu trang cố gắng tải jQuery của riêng nó để các hiệu ứng nhất định có thể chạy khi bookmarklet khởi tạo và dễ lập trình.

Trang iFrame cũng tải jQuery (không có nội dung trong iframe không hoạt động bình thường).

Tôi đang sử dụng jQuery mới nhất:

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js 

Tôi muốn biết tại sao IE9 gây ra những sai sót SCRIPT khi không có trình duyệt nào khác không? Tại sao jQuery không tải đúng trong IE9?

Mọi thông tin chi tiết sẽ được đánh giá cao.

Trả lời

6

Tôi vừa dành một vài giờ đấu vật với vấn đề này và cuối cùng đã tìm được giải pháp mà tôi nghĩ sẽ giúp bạn.

Dưới đây là một phiên bản đơn giản của các mã đã gây rắc rối cho tôi:

$frames = $(*html_including_frames_here*); 
$div = $('<div></div>'); 
$div.append($frames); 
$('body').append($div); 

** Đang tải một hoặc khung hơn vào một div đó là KHÔNG trong DOM và sau đó tải mà div vào DOM gây ra tất cả các vấn đề trong trường hợp của tôi. Các khung không tải các kịch bản JS như chúng cần, và sau đó tất cả mọi thứ (jQuery, JSON, vv) là không xác định.

này, mặt khác, hoạt động:

$frames = $(*html_including_frames_here*); 
$div = $('<div></div>'); 
$('body').append($div); 
$div.append($frames); 

Sự khác biệt duy nhất ở đây là tôi đang đặt div trong dom đầu tiên và sau đó tải các khung vào nó. Bằng cách nào đó mà làm cho tất cả sự khác biệt.

+1

Man ... Cảm ơn bạn rất nhiều! Tôi đã chụp theo nhiều hướng và chỉ về IFrame mà tôi không nghĩ đến. Tôi đã có DOM khác nhau, nhưng vẫn còn cách & trật tự iframe được in vào trang, tạo ra lỗi này. Vì vậy, cho đến bây giờ các khung nội tuyến được xây dựng bằng cách sử dụng JQ, và bây giờ mã hóa cứng của nó, và tôi đối xử với nó src mã bằng cách sử dụng jq. Điều này đã thay đổi lỗi của tôi. Cảm ơn bạn đã chỉ đường cho tôi :) – neoswf

+1

vui lòng trợ giúp! Tôi đã chiến đấu hết mình với điều này, rất vui vì tôi có thể giúp bạn tiết kiệm thời gian. Vui lòng chấp nhận câu trả lời để người khác có thể nhận ra rằng đó là hợp pháp. :) EDIT: Tôi nghĩ bạn là poster gốc. Rất tiếc –

1

cảm ơn câu hỏi của bạn, tôi đã gặp phải vấn đề tương tự. lần đầu tiên tôi sửa nó bằng jquery tải từ jquery.com (http://code.jquery.com/jquery-1.7.1.js). sau đó IE9 tải nó. có lẽ microsoft đang chặn một số google-apis? rất thú vị ...

+0

nếu bạn muốn luôn có phiên bản jquery mới nhất, hãy thử http://code.jquery.com/jquery-latest.min.js – algorhythm

+0

hoặc http://ajax.microsoft.com/ajax/jquery/jquery-1.7.1 .min.js – algorhythm

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