2012-01-25 16 views
32

Ho un app che in alcune circostanze fa sì che IE8 ad apparire il messaggio di compatibilità e ricaricare in modalità compat:Quali fattori specifici causano l'attivazione della modalità di compatibilità di IE8?

un problema che visualizza causato Internet Explorer per aggiornare la pagina web utilizzando vista di compatibilità

Questo è raro, e non si verifica a causa dei meta-tag, per quanto posso dire. Succede come una risposta all'azione dell'utente che altera il DOM. Questo è lo stesso problema di: https://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-view, ma la mia domanda è: quali tipi di cose causano questo, come aiuto nel risolverlo.

In altre parole, vedere questo sito thesitewizard.com, in cui una terza causa di modalità di compatibilità in IE8 è descritto come:

e, a volte, per qualche altro insondabile, la ragione non documentata, sulla pagine che sono validato come conforme agli standard (o, almeno, lo è in Release Candidate 1).

E la domanda è: quali ragioni incomprensibili e non documentate?

+0

Non ho mai visto una pagina convalidata in HTML "salta" nella visualizzazione di compatibilità. Ma come mai nessuno può aiutarti senza vedere la tua app? Altrimenti le risposte qui saranno solo una casistica di ipotesi. – Sparky

+2

Si prega di vedere il titolo della domanda. Sto cercando i tipi di cose che causano questo, al fine di aiutare a guidare il debug. Per non vederlo mai, fai clic sul link del superuser nella domanda, c'è uno screenshot di esso. – mtyson

+0

Ho letto il titolo e ho capito cosa stai cercando. Tuttavia, è probabile che venga chiusa una domanda che non può portare a una risposta o soluzione specifica. – Sparky

risposta

7

Dopo una lunga sessione di debug (utilizzando vecchi avvisi della scuola per individuare ciò che stava fallendo dove), questa linea apparentemente innocui di manipolazione del DOM era il colpevole:

document.getElementById("literal"+varValue).style.display = "none"; 

Non c'era alcun errore qui, e l'elemento era apparentemente trovato (cioè, questo non è un puntatore nullo varietà giardino).

Questa è un'app di grandi dimensioni e ci sono molte cose intorno a questo codice. Sono passato al seguito, e questo a quanto pare ha impedito la questione:

setTimeout(function(){ 
      var layoutEl = document.getElementById("literal"+varValue); 
      if (layoutEl) 
       layoutEl.style.display = "none"; 
     },10) 
+2

Anche per me, il tentativo di nascondere un elemento specifico fa sì che IE8 aggiorni la pagina utilizzando la Visualizzazione Compatibilità. Sto usando jQuery anche se usando [.hide()] (http://api.jquery.com/hide) e facendo uso della [durata] (http://api.jquery.com/hide/#hide -duration-complete) ha fatto il trucco, ad es '$ ('# Id'). Nascondono (1)'. – WynandB

5

Il seguente contenuto proviene da un articolo di MSDN "Controlling default rendering".


Tenere presente che alcune condizioni, come quelle elencate qui, possono forzare Internet Explorer a visualizzare le pagine in una modalità di compatibilità dei documenti diversa da quella specificata nella pagina Web.

  • La visualizzazione Compatibilità è abilitata per la pagina.
  • La pagina viene caricata nell'area Intranet e Internet Explorer è configurato per utilizzare la Visualizzazione Compatibilità per le pagine caricate dall'area Internet.
  • La pagina viene caricata dal file system locale dell'utente (il che significa che la pagina viene caricata nell'area Intranet) e Internet Explorer è configurato per utilizzare la Visualizzazione Compatibilità per le pagine caricate dall'area Internet.
  • Internet Explorer è configurato per visualizzare tutti i siti Web in Visualizzazione Compatibilità.
  • Internet Explorer è configurato per utilizzare l'Elenco di visualizzazione compatibilità, che specifica un insieme di siti Web che vengono sempre visualizzati in Visualizzazione Compatibilità.
  • Gli strumenti di sviluppo vengono utilizzati per sovrascrivere le impostazioni specificate nella pagina Web.
  • La pagina Web ha rilevato un errore di layout di pagina e Internet Explorer è configurato per il ripristino automatico da tali errori riaprendo la pagina in Visualizzazione Compatibilità.
  • La pagina contiene un segno del Web che lo dirige per essere caricato in una zona particolare.

Questi collegamenti forniscono ulteriori informazioni che descrive come Internet Explorer determina la modalità di documento appropriato per una pagina web:

5

So giá hai la tua risposta, ma oggi ho cercato anche cosa fosse causi ng IE8 per attivare la modalità di compatibilità. Ho cercato per il codice JavaScript, CSS (: prima,: ultima, ecc), ma sembrava essere un po 'di stile in linea:

max-height in combinazione con troppopieno ..

Quindi questo (anche) fa scattare la compatibilità modalità in IE8:

style="overflow:scroll;max-height:200px;" 

E questo non, quindi risolto il mio problema:

style="overflow:scroll;height:200px;" 

Edit: Penso che questo è collegato : IE8 overflow:auto with max-height

+0

Grazie - non dimenticare di passare la domanda se pensi che sia buona – mtyson

+0

Ho rimosso gli elementi con overflow su una pagina che è stata forzata a caricare in visualizzazione compatibile e la pagina è stata caricata normalmente. Problema trovato – Pete

2

So che questa è una domanda vecchia, ma ho pensato di aggiungere qualcosa che ho appena trovato. Stavo avendo un problema in cui la modalità di compatibilità veniva forzata e non riuscivo a rintracciare la fonte. Ho rimosso manualmente la pagina dalla modalità di compatibilità e ho notato che alcuni caratteri non venivano visualizzati. È finito per essere un elenco puntato che stava usando un carattere personalizzato su un elemento pseudo:

li:before { 
    content: '\25B6'; 
} 

come una soluzione rapida, ho finito solo sovrascrivere questo per IE meno di 9:

.lt-ie9 li:before { 
    content: ''; 
} 

This article mi ha dato l'idea di cercare personaggi maltrattati. Spero che questo aiuti qualcuno se incappano in un problema simile!

Problemi correlati