Sto lavorando per un client che impone la modalità di compatibilità su tutti i siti Intranet. Mi chiedevo se ci fosse un tag che posso inserire nel mio HTML che spegne la modalità di compatibilità.
Sto lavorando per un client che impone la modalità di compatibilità su tutti i siti Intranet. Mi chiedevo se ci fosse un tag che posso inserire nel mio HTML che spegne la modalità di compatibilità.
Risposte:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
Dalla pagina MSDN collegata:
La modalità Edge indica a Windows Internet Explorer di visualizzare il contenuto nella modalità più alta disponibile, il che in realtà interrompe il paradigma del "blocco". Con Internet Explorer 8, questo equivale alla modalità IE8. Se una (ipotetica) versione futura di Internet Explorer supportasse una modalità di compatibilità superiore, le pagine impostate sulla modalità Edge appariranno nella modalità più alta supportata da quella versione; tuttavia, quelle stesse pagine appariranno comunque in modalità IE8 se visualizzate con Internet Explorer 8.
Tuttavia, la modalità "edge" non è incoraggiata nell'uso in produzione:
Si consiglia agli sviluppatori Web di limitare l'uso della modalità Edge per testare le pagine e altri usi non produttivi a causa dei possibili risultati imprevisti del rendering del contenuto della pagina nelle versioni future di Windows Internet Explorer.
Onestamente non capisco del tutto il perché. Ma secondo questo, il modo migliore per andare al momento è usare IE=8
.
IE=10
sui propri siti. Se hai testato il tuo sito in IE10 (versione di anteprima), è sicuro utilizzarlo; altrimenti, potresti voler attenerci IE=9
per ora.
Tools->Compatibility View Settings
e selezionando Visualizza tutti i siti Web nella Visualizzazione compatibilità. Per risolvere il problema, devo restituire l'intestazione nella risposta HTTP:X-UA-Compatible: IE=edge
Dopo molte ore che hanno risolto questo problema ... Ecco alcuni rapidi suggerimenti che ci hanno aiutato dalla X-UA-Compatible
documentazione: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
utilizzando <meta http-equiv="X-UA-Compatible" content=" _______ " />
Le modalità Standard User Agent (quelle non emulate) ignorano le <!DOCTYPE>
direttive nella tua pagina e vengono renderizzate in base agli standard supportati da quella versione di IE (ad esempio, IE=8
obbediranno meglio alla spaziatura del bordo della tabella e ad alcuni pseudo-selettori rispetto a IE=7
).
Considerando che, le modalità di emulazione dicono a IE di seguire qualsiasi <!DOCTYPE>
direttiva nella tua pagina, renderizzando la modalità standard in base alla versione scelta e eccedendo la modalità in baseIE=5
I valori possibili per l' content
attributo sono:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Se stai lavorando con una pagina nella Intranet Zone, potresti scoprire che IE9, indipendentemente da ciò che fai, sta andando in modalità IE7 Compat.
Ciò è dovuto all'impostazione all'interno delle impostazioni di compatibilità IE che indica che tutti i siti Intranet devono essere eseguiti in modalità compatibilità. Puoi deselezionarlo tramite un criterio di gruppo (o semplicemente deselezionarlo in IE) oppure puoi impostare quanto segue:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Funziona (come dettagliato in altre risposte), ma inizialmente potrebbe non apparire così: deve venire prima che vengano dichiarati i fogli di stile . In caso contrario, viene ignorato.
Credo che questo farà il trucco:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Come suggerito in questa risposta a una domanda correlata, la modalità "edge" può essere impostata nel file Web.Config. Questo lo farà applicare a tutto l'HTML restituito dall'applicazione senza la necessità di inserirlo in singole pagine:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Questo stesso passaggio può essere eseguito anche modificando le "Intestazioni di risposta HTTP" utilizzando Gestione IIS per il server IIS, l'intero sito Web o applicazioni specifiche.
La soluzione con meta tag non funzionava per noi, ma impostandola nell'intestazione della risposta ha fatto:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
proprietà, stackoverflow.com/a/22059516/368691 . Ricorda che Chrome Frame è stato ritirato. blog.chromium.org/2013/06/retiring-chrome-frame.html
Qualche nota in più su questo argomento in base alle mie esperienze recenti. L'università con cui lavoro per i portatili con IE 8 impostata sulla modalità di compatibilità per tutti i siti Intranet. Ho provato ad aggiungere il meta tag per disabilitare questa modalità per le pagine fornite dal mio sito ma IE ha ignorato costantemente questo tag. Come ha detto Lance nel suo post, l'aggiunta di un'intestazione di risposta ha risolto questo problema. Ecco come ho impostato l'intestazione in base al metodo HTML5 boilerplate:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
Affinché questa intestazione sia effettivamente inviata, devi assicurarti di avere mod_headers attivato in Apache. Se vuoi assicurarti di avere questa mod attivata, inseriscila in una pagina che può eseguire php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Per impostazione predefinita, IE8 utilizza la modalità standard per intERnet e la modalità quirks per intRAnet. Il meta tag HTML viene ignorato se il doctype è impostato su xhtml di transizione. La soluzione è aggiungere un'intestazione HTTP nel codice. Questo ha funzionato per noi. Ora il nostro sito intranet sta forzando IE8 a rendere l'app in modalità standard.
Aggiunto a PageInit della classe di pagina di base (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
riferimento: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Ciò è dovuto all'impostazione all'interno delle impostazioni di compatibilità IE che indica che tutti i siti Intranet devono essere eseguiti in modalità compatibilità. Puoi deselezionarlo tramite un criterio di gruppo (o semplicemente deselezionarlo in IE) oppure puoi impostare quanto segue:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Apparentemente non è possibile modificare le impostazioni della vista di compatibilità come criterio di gruppo, ma è qualcosa che forse può essere modificato nel registro, questo metatag funziona bene per me, ho dovuto far funzionare l'attributo richiesto come parte di un modulo HTML , ha funzionato in Chrome e Firefox, ma non IE.
Ecco una bella visione di ciò che i browser supportano ogni singolo elemento html 5.
Si noti l'unico denominatore comune di Google Chrome, supporta tutto. Spero che questo sia di aiuto
Inserisci come primo elemento sotto il tag.
Ciò impone a IE di eseguire il rendering della pagina nella versione fisica di IE e ignora le "Impostazioni modalità" del browser. Questo può essere impostato negli strumenti di sviluppo, prova a cambiarlo in una versione precedente di IE per testarlo, questo dovrebbe essere ignorato e la pagina dovrebbe apparire esattamente la stessa.
Se hai accesso al server, il modo più affidabile per farlo è farlo sul server stesso, in IIS. Vai alle intestazioni di risposta HTTP IIS. Aggiungi nome: X-UA-compatibile
Valore: IE = bordo Questo sostituirà il tuo browser e il tuo codice.
Se vuoi che ogni singola pagina web carichi il contenuto scelto e stai usando asp.net. Basta applicarlo come primo tag sotto il tag di intestazione in Viste> condivisi> Layout.cshtml
solo un consiglio