2011-10-19 13 views
6

Tengo un bookmarklet que carga un div en una página actual y coloca un iframe dentro de él. El bookmarklet funciona como un sueño en todos los navegadores excepto en IE9. Incluso funciona en versiones anteriores de IE.

estoy usando el siguiente marco bookmarklet:

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

Alguien más ha tenido un problema similar aquí (no relacionado con bookmarklets):

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

Hasta ahora estoy entendiendo que el jQuery de mi bookmarklet no se carga correctamente en IE9.

El bookmarklet intenta cargar su propia jQuery para que ciertos efectos puedan ejecutarse cuando se inicializa el bookmarklet y para facilitar la programación.

La página iFrame también carga jQuery (sin ella, el contenido del iframe no funciona correctamente).

estoy usando la última jQuery:

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

me gustaría saber por qué IE9 hace que estos errores de script cuando ningún otro navegador? ¿Por qué jQuery no se carga correctamente en IE9?

Cualquier idea sería muy apreciada.

Respuesta

6

Acabo de pasar algunas horas luchando con este problema y finalmente encontré una solución que creo que te ayudará.

Aquí es una versión simplificada del código que causó problemas para mí:

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

** Cargando una o más tramas en un div que no está en el DOM y colocarla después de que div en el DOM hace que todo el problemas en mis casos. Los marcos no cargan los scripts JS como deberían, y luego todo (jQuery, JSON, etc.) no está definido.

Esto, por otra parte, las obras:

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

La única diferencia aquí es que estoy colocando el div en el Reino primero y luego cargar los cuadros en ella. De alguna manera, eso hace toda la diferencia.

+1

Hombre ... ¡Muchas gracias! Estaba filmando en muchas direcciones, y solo sobre IFrame que no había pensado. Tenía un DOM diferente, pero el modo y el orden en que se imprime el iframe en la página generaba este error. Hasta ahora, el iframe se ha creado utilizando JQ, y ahora está codificado, y trato su código src usando jq. Esto resoved mi error. Gracias por mostrarme el camino :) – neoswf

+1

feliz de ayudar! Luché mucho con este, tan feliz de poder ahorrarle algo de tiempo. Por favor, acepte la respuesta para que otros puedan reconocer que es legítimo. :) EDIT: pensé que eras el cartel original. Uy –

1

gracias por su pregunta, tuve el mismo problema. por primera vez lo arreglé con la carga de jquery de jquery.com (http://code.jquery.com/jquery-1.7.1.js). entonces IE9 lo carga. tal vez Microsoft está bloqueando algunos google-apis? muy interesante ...

+0

si quiere siempre la última versión de jquery, intente http://code.jquery.com/jquery-latest.min.js – algorhythm

+0

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