2011-10-19 15 views
6

Ho un bookmarklet che carica un div in una pagina corrente e inserisce un iframe al suo interno. Il bookmarklet funziona come un sogno in tutti i browser tranne IE9. Funziona anche nelle versioni precedenti di IE.

Sto utilizzando il seguente quadro bookmarklet:

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

Qualche altro ha avuto un problema simile qui (non collegato al bookmarklets):

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

Finora mi sto rendendo conto che jQuery del mio bookmarklet non si carica correttamente in IE9.

Il bookmarklet tenta di caricare il proprio jQuery in modo che alcuni effetti possano essere eseguiti quando il bookmarklet viene inizializzato e per facilitare la programmazione.

La pagina iFrame carica anche jQuery (senza che il contenuto nell'iframe non funzioni correttamente).

Sto usando l'ultima jQuery:

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

Vorrei sapere perché IE9 fa sì che questi errori di script quando nessun altro browser? Perché jQuery non si carica correttamente in IE9?

Qualsiasi intuizione sarebbe molto apprezzata.

risposta

6

Ho appena trascorso alcune ore a lottare con questo problema e finalmente ho trovato una soluzione che penso possa aiutarti.

Ecco una versione semplificata del codice che ha causato problemi per me:

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

** caricamento di una o più fotogrammi in un div che non è nel DOM e quindi caricando che div nel DOM causa tutto il problemi nei miei casi. I frame non caricano gli script JS come dovrebbero, e quindi tutto (jQuery, JSON, ecc.) Non sono definiti.

Questo, d'altra parte, funziona:

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

L'unica differenza è che sto ponendo il div nel DOM e poi caricare le cornici in esso. In qualche modo questo fa la differenza.

+1

Man ... Grazie mille! Stavo girando in molte direzioni, e solo su IFrame non ho pensato. Ho avuto DOM diversi, ma il modo e l'ordine di stampare l'iframe sulla pagina, ha generato questo bug. Quindi finora l'iframe è stato creato usando JQ, e ora è codificato in modo rigido, e tratto il codice src usando jq. Questo ha risuscitato il mio bug. Grazie per avermi mostrato il modo :) – neoswf

+1

felice di aiutare! Ho combattuto duramente su questo, così felice di poterti risparmiare tempo. Si prega di accettare la risposta in modo che altri possano riconoscere che è legittimo. :) EDIT: Ho pensato che tu fossi il poster originale. Spiacenti –

1

grazie per la tua domanda, ho avuto lo stesso problema. per la prima volta l'ho risolto con il caricamento di jquery da jquery.com (http://code.jquery.com/jquery-1.7.1.js). quindi IE9 lo carica. forse Microsoft sta bloccando alcuni google-apis? molto interessante ...

+0

se si desidera sempre l'ultima versione di jquery, provare http://code.jquery.com/jquery-latest.min.js – algorhythm

+0

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