2012-02-29 12 views
7

I "m chiedo se qualcuno mi può dare qualche informazione in un davvero strano problema IE9 ho lottato conproblema Whitescreen in IE9 - Rimozione iframe

sto finendo la produzione di un sito per il lavoro. - funziona bene in ff/chrome/ie7/ie8 senza errori di script

In IE9 l'ultimo passaggio dell'applicazione fa sì che l'intera scheda non contenga errori di script o avvisi (la modifica della modalità documento su ie8 risolverà il problema, ma è ovviamente inadatto alla produzione)

Sfortunatamente il sito è piuttosto complesso con una tonnellata di ajax e script in-page s quindi non posso pubblicare facilmente il codice rilevante. Sto più cercando di capire come diagnosticare questo.

Ho controllato i log degli errori di IE e sono vuoti. Gli strumenti di sviluppo Web non mi dicono nulla. Il sito non utilizza alcun plugin (Flash/Silverlight, Ect.) Solo javascript con jQuery.

C'è un PDF che viene visualizzato in un iframe attorno al punto in cui non riesce - ma un pdf quasi identico viene visualizzato nel passaggio precedente (usando lo stesso metodo) senza problemi. Il codice fallisce attorno a una chiamata alla finestra dell'interfaccia utente di jquery ma non riesco a ottenere la linea esatta.

Se qualcuno ha la minima idea su come provare a diagnosticare ulteriormente, lo apprezzerei molto. Posso continuare a cercare il bug ma non ho mai visto questo tipo di comportamento prima e non sono sicuro di cosa sto cercando.

+0

Hai provato a verificare se il browser mostra la pagina in quirks mode? Potrebbe essere correlato al modo in cui il modello di box viene gestito dal browser ... – mamoo

+1

@mamoo Se la modalità quirks era il problema, IE8 avrebbe lo stesso problema ... o almeno, dovrebbe. – Snuffleupagus

+0

Sì, ho appena controllato: dovrebbe ... hai ragione. http://en.wikipedia.org/wiki/Quirks_mode – mamoo

risposta

9

Grazie per tutti gli input su questo. Scusa se sono stato completamente sopraffatto da alcuni progetti contemporaneamente, quindi non sono stato in grado di pubblicare aggiornamenti sui passaggi di debug.

Ci sono voluti per sempre, ma alla fine ho capito che tutto stava andando in crash quando ho chiuso la finestra di dialogo contenente il primo PDF.

Una delle mie funzioni di supporto era l'apertura del dialogo e la distruzione automatica dei contenuti alla chiusura. Normalmente questo funziona bene perché sto rimuovendo un div contenente il frammento della pagina o l'iframe.

In questa situazione ho caricato un frammento di pagina nella finestra di dialogo che conteneva alcuni pulsanti e l'iframe pdf. Ho chiamato il metodo .remove() sull'elemento padre che contiene l'iframe piuttosto che l'iframe stesso. Per qualche ragione questo sembra funzionare bene in tutti gli altri browser, ma in IE9 uccide praticamente il rendering della pagina senza alcun avvertimento o messaggio.

Ho il forte sospetto che il colpevole sia il plugin Adobe, ma non ne sono del tutto sicuro.

Ecco il 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

Obscure come diavolo, ma ho avuto lo stesso problema e la correzione ha funzionato. Grazie! –

+1

Ho cercato un'esplosione per ore prima di trovare questa risposta. Un problema molto frustrante, e anche trovare l'area nel debugging lascia domande sul perché. Questa domanda è stata difficile da trovare, ma sono contento di averlo fatto –

+1

Cappelli a te Kelly! Abbiamo riscontrato questo problema quando usavamo angolare: abbiamo creato schede di documento come 'ng-repeat' per' tabs' array. La chiusura di una scheda è stata eseguita con 'splice' nelle schede, e questo ha reso la pagina bianca e ci ha portato al tuo problema. Usando il tuo metodo, abbiamo aggiunto jQuery e prima rimosso l'appropriato 'iframe', e poi applicato' splice' -> lo schermo diventa ancora bianco, ma torna alla normalità dopo 2 secondi. Sheeeesh ... che bug ... siamo così felici che abbiamo trovato la tua risposta! – veljkoz

0

Come una cosa da provare - guarda cosa c'è nel visualizzatore DOM IE9 dopo questo schermo bianco. C'è una buona possibilità che la maggior parte delle cose ci sia e che non funzioni correttamente nel rendering (o che ci sia qualcos'altro di rendering su di esso). Per lo meno, sapere se sta perdendo un sacco di cose dal DOM o no dovrebbe darti dei dati utili.

+0

Sfortunatamente, secondo il DOM viewer non c'è niente - speravo di avere solo un div o qualcosa del genere ma non è niente. –

+0

In realtà sono dati utili. Significa che qualunque cosa sia è un difetto logico che fa implodere il tuo DOM, piuttosto che un bug di rendering di qualche tipo. –

+1

Grazie per le informazioni: sembra che il plug-in di Adobe sia andato in crash perché ho rimosso l'elemento contenente l'iframe dal DOM (anziché l'iframe stesso) –

1

Ho incontrato lo stesso problema su IE11 durante il tentativo di rimuovere un iframe in un div con AngularJS .Rimuovere prima l'iframe causerebbe solo lo stesso problema, quindi ho spostato l'iframe src in una nuova pagina (about: blank) prima, quindi ho rimosso il div che ha funzionato. Speriamo che questo aiuti qualcuno con un problema simile.

pseudo-codice qui sotto:

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