2012-02-29 13 views
7

I "m pregunto si alguien me puede dar una idea de un tema IE9 realmente extraño que he estado luchando contema Whitescreen en IE9 - Extracción iframe

estoy terminando la producción de un sitio de trabajo. - funciona bien en ff/chrome/ie7/ie8 sin errores de scripts

En IE9, el último paso de la aplicación hace que toda la pestaña pase a pantalla blanca sin errores o advertencias de scripts. (Se corregirá cambiar el modo de documento a ie8 el problema, pero obviamente no es adecuado para la producción)

Lamentablemente, el sitio es bastante complejo con un montón de ajax, y script in-page s así que realmente no puedo publicar el código relevante fácilmente. Estoy intentando averiguar cómo diagnosticar esto.

He comprobado los registros de errores de IE y están vacíos. Las herramientas de desarrollo web no me dicen nada. El sitio no utiliza ningún complemento (Flash/Silverlight, Ect.) Solo javascript w/jQuery.

Hay un PDF que se muestra en un iframe alrededor del paso donde falla, pero se muestra un PDF casi idéntico en el paso anterior (utilizando el mismo método) sin problemas. El código falla alrededor de una llamada a la ventana de la interfaz de usuario de jquery, pero parece que no puedo obtener la línea exacta.

Si alguien tiene una idea de cómo tratar de diagnosticar esto más, realmente lo agradecería. Puedo seguir buscando el error, pero nunca antes había visto este tipo de comportamiento y simplemente no estoy seguro de lo que estoy buscando.

+0

¿Ha tratado de comprobar si el navegador muestra la página en el modo no estándar? Podría estar relacionado con la forma en que el navegador maneja el modelo de caja ... – mamoo

+1

@mamoo Si el problema era el modo raro, IE8 tendría el mismo problema ... o al menos, debería. – Snuffleupagus

+0

Sí, acabo de comprobar: debería ... tienes razón. http://en.wikipedia.org/wiki/Quirks_mode – mamoo

Respuesta

9

Gracias por toda la información sobre esto. Lo siento, me abrumé por completo con algunos proyectos a la vez, así que no pude publicar actualizaciones sobre los pasos de depuración.

Me tomó una eternidad pero finalmente me di cuenta de que todo estaba fallando cuando cerré el diálogo que contenía el primer PDF.

Una de mis funciones auxiliares fue abrir el cuadro de diálogo y destruir automáticamente los contenidos al cerrar. Normalmente esto funciona bien ya que estoy eliminando un div que contiene el fragmento de página o el iframe.

En esta situación, tuve un fragmento de página cargado en el cuadro de diálogo que contenía algunos botones y el iframe de pdf. Llamé al método .remove() en el elemento primario que contiene el iframe en lugar del propio iframe. Por alguna razón, esto parece funcionar bien en cualquier otro navegador, pero en IE9 mata la representación de la página sin ninguna advertencia o mensaje.

Sospecho que el culpable es el plugin de adobe, pero no estoy del todo seguro.

Aquí es el FIX-
HTML:

<div id="container"> 
<iframe src="loremipsum.pdf"></iframe> 
</div> 

Javascript:

//Ruins my entire week 
$("#container").remove(); 

//Works as the pdf is removed directly 
$("#container").find("iframe").remove().end().remove(); 
+3

Oscuro como diablos, pero tuve el mismo problema y la corrección funcionó. ¡Gracias! –

+1

Busqué una explicación durante horas antes de encontrar esta respuesta. Un problema muy frustrante, e incluso encontrar el área en la depuración deja preguntas sobre por qué. Esta pregunta fue difícil de encontrar, pero me alegro de haberlo hecho –

+1

¡Felicitaciones a ti Kelly! Tuvimos este problema al usar angulares: creamos pestañas de documento como 'ng-repeat' para' tabs' array. El cierre de una pestaña se realizó con 'splice' en las pestañas, y esto proporcionó la página en blanco y nos llevó a su problema. Usando su método, agregamos jQuery y primero eliminamos el 'iframe' apropiado, y luego aplicamos' empalme' -> la pantalla aún se vuelve blanca, pero vuelve a la normalidad después de 2 segundos. Sheeeesh ... qué error ... ¡estamos tan felices de haber encontrado tu respuesta! – veljkoz

0

Como una cosa para probar: vea lo que hay en el visor DOM IE9 después de que se vea en blanco. Existe una posibilidad decente de que la mayoría de las cosas estén allí y que no se procesen correctamente (o que se haya renderizado algo más). Por lo menos, saber si está perdiendo un montón de cosas fuera del DOM o no debería darle algunos datos útiles de.

+0

Desafortunadamente, de acuerdo con el visor DOM no hay nada allí - esperaba que tuviésemos un div encima o algo así, pero no es nada. –

+0

Eso es realmente información útil. Significa que sea lo que sea es una falla lógica que hace que tu DOM implosione, en lugar de un error de renderización de algún tipo. –

+1

Gracias por la información, parece que fue el plugin de Adobe que se colgaba porque eliminé el elemento que contenía el iframe del DOM (en lugar del iframe en sí) –

1

me encontré con el mismo problema en EI11 al intentar quitar un iframe en un div con AngularJS .La eliminación del iframe primero solo causaría el mismo problema, por lo que primero navegué por el iframe src a una nueva página (sobre: ​​en blanco) y luego eliminé el div que funcionaba. Con suerte, esto ayuda a alguien con un problema similar.

Pseudo-código de abajo:

$ctrl.iframeUrl = 'about:blank'; // change the iframe url here 
$timeout(function(){ 
    $ctrl.removeIframe(); // remove the iframe here 
});