Rileva modalità di compatibilità IE8

Possibile duplicato:
Differenzia il browser e browser IE7 nella modalità di compatibilità IE7

Non abbiamo avuto il tempo di testare completamente IE8 con il nostro sistema piuttosto esteso. Stiamo anche raggiungendo il punto in cui non possiamo vietare l’uso di IE8. I nostri utenti sono testardi e non molto sofisticati, quindi non riteniamo di poter dire loro di utilizzare il pulsante “Modalità compatibilità”. Invece, aggiungeremo il meta tag “IE = EmulateIE7” come correzione temporanea .

Il problema è che quando viene utilizzato questo tag, il browser continua a riferirsi a IE8, che viene quindi rilevato dalle nostre pagine e rifiutato. Posso capire perché il rilevamento lato server non può raccogliere il meta tag (il server ha già l’user-agent prima che il meta tag venga inviato ed elaborato), ma anche i controlli lato client falliscono. Se il pulsante della modalità di compatibilità viene cliccato sulle macchine client, l’user-agent è IE7, ma non se usiamo il meta tag.

Ciò significa, tra le altre cose, che dobbiamo disabilitare il controllo e quindi, se commettiamo un errore da qualche parte e dimentichiamo di aggiungere il meta tag a una pagina, avremo pagine rotte.

Qualcun altro l’ha incontrato e ha trovato un approccio migliore? Non c’è modo di rilevare che IE8 è in esecuzione in modalità di compatibilità quando la modalità è impostata dal metatag?

E sappiamo che esiste una valida scuola di pensiero che dovremmo solo rendere tutte le pagine compatibili con la modalità Standard IE8 ma nel nostro piccolo angolo di realtà, questa non è un’opzione praticabile al momento (e sottolineerò che non abbiamo creato 4 o 5 versioni di IE che dovevano essere scritte in un modo non standard).

IE8 include un token tridente nella stringa User-Agent indipendentemente dalla modalità di compatibilità.

Vedi MSDN per maggiori dettagli: http://blogs.msdn.com/ie/archive/2009/01/09/the-internet-explorer-8-user-agent-string-updated-edition.aspx

IE7 su Windows Vista
Mozilla / 4.0 (compatibile; MSIE 7.0 ; Windows NT 6.0)

IE8 su Windows Vista (Visualizzazione Compatibilità)
Mozilla / 4.0 (compatibile; MSIE 7.0 ; Windows NT 6.0; Trident / 4.0 )

IE8 su Windows Vista
Mozilla / 4.0 (compatibile; MSIE 8.0 ; Windows NT 6.0; Trident / 4.0 )

È necessario verificare il valore di document.documentMode che avrà un valore di 8 in modalità IE8 true e 7 in modalità IE7. La stringa dell’agente utente sarà identica in entrambi i casi e continuerà a indicare IE8. Nota che questa variabile JavaScript è disponibile solo in IE8.

Cordiali saluti, per i dettagli su come rilevare la modalità di compatibilità (AKA come rilevare Compatibility View), si prega di considerare la visualizzazione del seguente link …

http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

… che mostra alcune informazioni utili.

Il problema è in realtà ancora più complesso quando gestisci i link che arrivano al tuo sito dai siti di emulazione IE8 BLACKLIST come Facebook.

Un collegamento condiviso su Facebook fa sì che i tuoi link si aprano in un Popup – SE L’opzione “INCLUDE AGGIORNAMENTO WEBLISTS” è selezionata nelle impostazioni di visualizzazione della compatibilità, che è selezionata per impostazione predefinita, la finestra popup vede il referrer Blacklist da Facebook e apre la finestra in Blacklist modalità inizialmente. Quando si rileva in background per Trident \ 4.0 – vedrai il valore e imposterai il livello minimo CSS.

Tuttavia, dopo aver caricato il browser, si distriggers dalla modalità Compat e passa alla modalità STANDARD senza aggiornamento. Hai quindi il CSS sbagliato per le modalità standard assegnate.

Soluzione: forza il browser IE fuori dalla modalità di compatibilità. Sì, sembra strano, perché consentire a un utente di eseguire il downlevel sul tuo sito se non è necessario.

Proprio come Downlevel hai impostato IE = EmulateI7 per forzare il browser in basso puoi aggiungere IE = EmulateIE8 e forzare l’utente a visualizzare la tua pagina in IE8 Standard. questa modalità rimuove anche la loro capacità di selezionare la Visualizzazione Compatibilità e ridurre le esigenze di Test per quella modalità

Non “rileva la modalità di compatibilità IE8”, ma potrebbe anche essere d’aiuto:

Se si ha accesso al server stesso, è ansible inviare un’intestazione HTTP, dare un’occhiata al blog di Mike Ormond a riguardo . La pagina MSDN per l’ implementazione del Meta Switch su IIS contiene i dettagli dell’intestazione e come impostarlo / inviarlo.