support internet funciona javascript jquery internet-explorer internet-explorer-9
1.3.1código fuente de 1.3.2

javascript - internet - jquery support



Error en Internet Explorer 9(no versiones anteriores u otros navegadores) al incluir jQuery en un iframe (4)

Tenía el mismo problema EXACTO, pero la causa de la mía era diferente. Pensé que compartiría aquí en caso de que otros estuvieran en el mismo barco que yo, especialmente teniendo en cuenta que me llevó aproximadamente 4 horas localizarlo ...

Nuestra página principal tenía un iframe que terminó teniendo su atributo src cambiado dos veces en muy poco tiempo (en realidad estábamos cargando el mismo src dos veces por accidente, una vez directamente en el HTML y luego otra vez en la carga de la página a través de JavaScript). No estoy seguro de por qué Internet Explorer 9 se ahoga, pero supongo que el marco fue parcialmente a través de la inicialización de sus scripts cuando el src se estableció de nuevo, poniendo el motor de JavaScript en un estado infeliz. De cualquier manera, me alegro de haberlo encontrado, ¡ya que no deberíamos haber cargado el marco dos veces!

Sin embargo, la verdadera razón por la cual Internet Explorer 9 murió tan mal es un misterio.

Básicamente tengo una página que lanzó un iframe de fancybox. En ese iframe también incluyo jQuery. Pero cuando lo pruebo en Internet Explorer 9 me da el error

Línea: 68 / n Error: ''Objeto'' no está definido

Este error está en el archivo jquery-1.4.1.js y la línea en cuestión es la segunda línea de esto:

// Save a reference to some core methods toString = Object.prototype.toString, hasOwnProperty = Object.prototype.hasOwnProperty, push = Array.prototype.push, slice = Array.prototype.slice, indexOf = Array.prototype.indexOf;

que es las últimas líneas de la función var jQuery = function( selector, context ) { .

No hay problema si estoy en la vista de compatibilidad, no hay problema en ningún otro navegador, solo Internet Explorer 9 en modo Internet Explorer 9 e Internet Explorer 9. Si ignoro el error, no veo problemas al usar cualquier versión de jQuery.

¿Qué pasa y qué puedo hacer para solucionarlo?


D''oh, pensé que tenía la última caja elegante. Resulta que tenía 1.3.1, 1.3.4 corrige este problema.

UPD (sompylasar): de hecho, eso fue corregido en 1.3.2 (ver el registro de cambios ). He comparado el código fuente de 1.3.2 con 1.3.1 y encontré la siguiente diferencia que resuelve el problema:

content.find(''iframe'').attr(''src'', isIE6 && /^https/i.test(window.location.href || '''') ? ''javascript:void(false)'' : ''about:blank'');

donde isIE6 evalúa:

isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,

Este fragmento debe ejecutarse antes de eliminar el iframe del DOM.


El problema se solucionó cuando eliminé el atributo SRC del iframe y agregué el evento onOpen al diálogo de jQuery:

open: function() { document.getElementById("mainFrame").src = "/login.aspx"; }


Este es un problema relacionado: IE9 arroja excepciones al cargar scripts en iframe. ¿Por qué?

Parece que hay un problema real en Internet Explorer con objetos globales nativos como ''Función'' y ''Objeto'' que no están definidos en algunas circunstancias cuando los scripts se cargan anticipadamente (en la sección head) de un iframe ...

Puse una recompensa por esa otra pregunta para darle más atención.

Por experiencia sé que este problema también existe en IE8, pero parece ser más raro allí. Parece que en IE9 ha empeorado ...