2011-10-19 18 views
6

Mam bookmarklet, który ładuje div do bieżącej strony i umieszcza wewnątrz niego element iframe. Bookmarklet działa jak marzenie we wszystkich przeglądarkach oprócz IE9. Działa nawet we wcześniejszych wersjach IE.

Używam następujące ramy bookmarklet:

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

Ktoś inny miał podobny problem tutaj (nie związane z skryptozakładki):

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

tej pory jestem zrozumienie, że jQuery mojego bookmarkletu nie ładuje się poprawnie w IE9.

Zakładka próbuje załadować własną bibliotekę jQuery, aby pewne efekty mogły zostać uruchomione podczas inicjowania bookmarkletu i ułatwienia programowania.

Strona iFrame ładuje również jQuery (bez niej zawartość w elemencie iframe nie działa poprawnie).

używam najnowszego jQuery:

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

Chciałbym wiedzieć, dlaczego IE9 powoduje te błędy skryptu, kiedy żadna inna przeglądarka robi? Dlaczego jQuery nie ładuje się poprawnie w IE9?

Każdy wgląd byłby mile widziany.

Odpowiedz

6

Właśnie spędziłem kilka godzin na tym problemie i ostatecznie znalazłem rozwiązanie, które według mnie może ci pomóc.

Oto uproszczona wersja kodu, który spowodował problemy dla mnie:

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

** Ładowanie jeden lub więcej ramek do div, który nie jest w DOM i WTEDY ładowanie że div do DOM powoduje wszystkie problemy w moich sprawach. Ramki nie ładują skryptów JS tak jak powinny, a wtedy wszystko (jQuery, JSON itd.) Jest niezdefiniowane.

To, z drugiej strony, działa:

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

Jedyną różnicą jest to, że jestem umieszczenie div w dom, a potem ładuje ramek do niego. Jakoś to robi różnicę.

+1

Mężczyzna ... Dziękuję bardzo! Strzelałem w wielu kierunkach i tylko o IFrame, o którym nie myślałem. Miałem inny DOM, ale nadal sposób i kolejność iframe jest drukowane na stronie, wygenerowany ten błąd. Do tej pory element iframe został zbudowany przy użyciu JQ, a teraz jest zakodowany i traktuję go jako kod src za pomocą jq. To naprawiło mój błąd. Dziękuję za pokazanie mi drogi :) – neoswf

+1

chętnie Ci pomożemy! Ciężko walczyłem z tym, więc cieszę się, że mogłem cię trochę oszczędzić. Przyjmij odpowiedź, aby inni mogli rozpoznać, że jest to zgodne z prawem. :) EDYTOWANIE: Myślałem, że jesteś oryginalnym plakatem. Ups –

1

dzięki za twoje pytanie, miałem ten sam problem. po raz pierwszy naprawiłem to przy ładowaniu jquery z jquery.com (http://code.jquery.com/jquery-1.7.1.js). następnie ładuje go IE9. może microsoft blokuje niektóre google-apis? bardzo interesujący ...

+0

jeśli chcesz zawsze najnowszą wersję jquery wypróbuj http://code.jquery.com/jquery-latest.min.js – algorhythm

+0

lub http://ajax.microsoft.com/ajax/jquery/jquery-1.7.1 .min.js – algorhythm

Powiązane problemy