In che modo Javascript può far sì che IE 8 ricarichi una pagina nella visualizzazione di compatibilità?
-
22-07-2019 - |
Domanda
Sto testando un'applicazione web basata su Javascript abbastanza complessa in Internet Explorer 8 su Windows Vista. Dopo aver caricato l'applicazione, IE è in "standard" modalità browser e "standard IE 8" modalità documento. Mentre l'applicazione è in esecuzione, IE a volte ricarica la pagina e visualizza un messaggio che dice qualcosa del tipo "Un problema di visualizzazione con (URL) ha causato a Internet Explorer di ricaricare la pagina nella visualizzazione di compatibilità". (non il messaggio esatto, sono su una versione non inglese di Vista). Dopo il ricaricamento, il browser è in modalità Quirks.
Il debug del codice Javascript è stato un esercizio di futilità poiché il problema non può essere riprodotto in modo affidabile o ridotto, quindi apprezzerei qualsiasi intuizione su cosa potrebbe causare questo comportamento.
Soluzione
Deve esserci un problema con il markup che stai offrendo / creando tramite innerHTML
. Ecco un articolo del team di IE che include dettagli sul ripristino automatico di IE dal markup che è impossibile analizzare correttamente in modalità standard IE8:
... ci sono percorsi di codice particolari all'interno del nuovo motore di layout in cui, in caso si verifichi un errore, il processo di layout non può essere ripristinato con garbo e abbiamo mantenuto affermazioni attorno a questi percorsi ... Abbiamo perfezionato questo esperienza ulteriore nella versione rilasciata di IE8 recuperando il layout & # 8220; asserzioni dure & # 8221; utilizzando la Visualizzazione compatibilità. In altre parole, crediamo che mostrare una pagina come IE7 offrirebbe un'esperienza utente migliore rispetto a non mostrare alcun contenuto.
Nota che l'uso di innerHTML
invoca il parser HTML, quindi potrebbe innescare questo problema anche dopo che la pagina è stata caricata se alimentata una stringa HTML di cui non può fare head o tail.
Altri suggerimenti
in fondo. per pagina, puoi aggiungere un meta tag
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
oppure, a livello di sito, aggiungilo all'intestazione:
X-UA-Compatible: IE=EmulateIE7
Sembra Ripristino automatico degli arresti anomali che si verifica nel renderer stesso. Questo è un bug in IE stesso piuttosto che nei tuoi script, quindi il debug sarà davvero difficile.
Questo succede su tutte le installazioni di IE8? IE8 è aggiornato con le ultime patch? (Potrebbe essere un'estensione inaffidabile di terze parti?)