Pracuję dla klienta, który wymusza tryb zgodności na wszystkich stronach intranetowych. Zastanawiałem się, czy istnieje jakiś tag, który mogę umieścić w swoim HTML, który wymusza wyłączenie trybu zgodności.
Pracuję dla klienta, który wymusza tryb zgodności na wszystkich stronach intranetowych. Zastanawiałem się, czy istnieje jakiś tag, który mogę umieścić w swoim HTML, który wymusza wyłączenie trybu zgodności.
Odpowiedzi:
<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>
Z połączonej strony MSDN:
Tryb krawędzi informuje program Windows Internet Explorer, aby wyświetlał zawartość w najwyższym dostępnym trybie, co faktycznie łamie paradygmat „blokowania”. W przypadku przeglądarki Internet Explorer 8 jest to odpowiednik trybu IE8. Jeśli (hipotetyczne) przyszłe wydanie Internet Explorera obsługuje tryb wyższej zgodności, strony ustawione na tryb Edge pojawią się w trybie najwyższym obsługiwanym przez tę wersję; jednak te same strony nadal pojawiałyby się w trybie IE8 podczas przeglądania w Internet Explorerze 8.
Jednak tryb „krawędzi” nie jest zalecany w zastosowaniach produkcyjnych:
Zaleca się, aby programiści WWW ograniczyli korzystanie z trybu Edge do testowania stron i innych zastosowań nieprodukcyjnych ze względu na możliwe nieoczekiwane wyniki renderowania zawartości stron w przyszłych wersjach programu Windows Internet Explorer.
Naprawdę nie do końca rozumiem dlaczego. Ale zgodnie z tym najlepszym sposobem, aby przejść w tej chwili, jest skorzystanie IE=8
.
IE=10
w swoich witrynach. Jeśli Twoja witryna została przetestowana w IE10 (wersja zapoznawcza), możesz z niej bezpiecznie korzystać; w przeciwnym razie możesz trzymać się tego IE=9
na razie.
Tools->Compatibility View Settings
i zaznaczając opcję Wyświetl wszystkie strony internetowe w widoku zgodności. Aby rozwiązać problem, muszę zwrócić nagłówek w odpowiedzi HTTP:X-UA-Compatible: IE=edge
Po wielu godzinach rozwiązywania problemów z tymi rzeczami ... Oto kilka najważniejszych informacji, które pomogły nam w X-UA-Compatible
dokumentacji: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
Za pomocą <meta http-equiv="X-UA-Compatible" content=" _______ " />
W standardowym środkiem użytkownika tryby (nie-naśladować nich) ignorować <!DOCTYPE>
dyrektyw w swoją stronę i uczynić na podstawie standardów obsługiwanych przez tę wersję IE (np IE=8
będzie lepiej Obey rozstaw stół granicznej i niektóre pseudo niż selektorów IE=7
).
Podczas gdy tryby emulacji mówią IE, aby postępował zgodnie z dowolnymi <!DOCTYPE>
dyrektywami na stronie, tryb renderowania standardów oparty jest na wybranej przez ciebie wersji, a tryb dziwactwa oparty naIE=5
Możliwe wartości tego content
atrybutu to:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Jeśli pracujesz ze stroną w strefie intranetowej, może się okazać, że IE9 bez względu na to, co robisz, przechodzi w tryb kompilacji IE7.
Wynika to z ustawienia w ustawieniach zgodności IE, które mówi, że wszystkie strony intranetowe powinny działać w trybie zgodności. Możesz to odznaczyć za pomocą zasad grupy (lub po prostu odznaczając to w IE), lub możesz ustawić następujące ustawienia:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Działa to (jak wyszczególniono w innych odpowiedziach), ale początkowo może się tak nie wydawać: musi pojawić się przed zadeklarowaniem arkuszy stylów . Jeśli tego nie zrobisz, zostanie to zignorowane.
Wierzę, że to załatwi sprawę:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Jak zasugerowano w tej odpowiedzi na powiązane pytanie, tryb „krawędzi” można ustawić w pliku Web.Config. Spowoduje to, że będzie on mieć zastosowanie do całego kodu HTML zwróconego z aplikacji bez konieczności wstawiania go do poszczególnych stron:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Ten sam krok można również wykonać, modyfikując „Nagłówki odpowiedzi HTTP” za pomocą Menedżera usług IIS dla serwera IIS, całej witryny lub określonych aplikacji.
Rozwiązanie dla metatagu nie działało dla nas, ale ustawienie go w nagłówku odpowiedzi spowodowało:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
właściwości, stackoverflow.com/a/22059516/368691 . Pamiętaj, że Chrome Frame został wycofany. blog.chromium.org/2013/06/retiring-chrome-frame.html
Jeszcze kilka notatek na ten temat w oparciu o moje ostatnie doświadczenia. Uczelnia, w której pracuję, wydaje problemy z laptopami z IE 8 ustawionym w tryb zgodności dla wszystkich witryn intranetowych. Próbowałem dodać metatag, aby wyłączyć ten tryb dla stron obsługiwanych przez moją witrynę, ale IE konsekwentnie zignorował ten tag. Jak wspomniał Lance w swoim poście, dodanie nagłówka odpowiedzi naprawiło ten problem. Oto jak ustawiłem nagłówek na podstawie metody HTML5:
<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>
Aby ten nagłówek został faktycznie wysłany, musisz upewnić się, że masz włączone mod_headers w Apache. Jeśli chcesz się upewnić, że masz włączony ten mod, umieść to na stronie, na której można uruchomić php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
IE8 domyślnie pracuje w trybie standardowym dla sieci intERnet i trybie dziwactw dla sieci intRAnet. Metatag HTML jest ignorowany, jeśli masz ustawiony doctype jako przejściowy xhtml. Rozwiązaniem jest dodanie nagłówka HTTP w kodzie. To działało dla nas. Teraz nasza strona intranetowa zmusza IE8 do renderowania aplikacji w trybie standardów.
Dodano do PageInit podstawowej klasy strony (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
odnośnik: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Wynika to z ustawienia w ustawieniach zgodności IE, które mówi, że wszystkie strony intranetowe powinny działać w trybie zgodności. Możesz to odznaczyć za pomocą zasad grupy (lub po prostu odznaczając to w IE), lub możesz ustawić następujące ustawienia:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Najwyraźniej nie można zmienić ustawień widoku zgodności jako zasad grupy, ale jest to coś, co może być zmienione w rejestrze, ten metatag działa dla mnie dobrze, musiałem sprawić, by wymagany atrybut działał jako część formularza HTML , działało w Chrome i Firefox, ale nie w IE.
Oto ładny obraz tego, jakie przeglądarki obsługują każdy pojedynczy element HTML 5.
Zwróć uwagę na jeden wspólny mianownik Google Chrome, który obsługuje wszystko. Mam nadzieję, że to pomoże
Wstaw jako pierwszy element pod tagiem.
Zmusza to IE do renderowania strony w fizycznej wersji IE i ignoruje „Ustawienia trybu” przeglądarki. Można to ustawić w narzędziach programistycznych, spróbuj zmienić go na starszą wersję IE w celu przetestowania, należy to zignorować, a strona powinna wyglądać dokładnie tak samo.
Jeśli masz dostęp do serwera, najbardziej niezawodnym sposobem jest zrobienie tego na samym serwerze, w IIS. Przejdź do nagłówków odpowiedzi HTTP IIS. Dodaj nazwę: Zgodna z X-UA
Wartość: IE = edge Spowoduje to zastąpienie przeglądarki i kodu.
Jeśli chcesz, aby każda strona ładowała wybraną treść i używasz asp.net. Po prostu zastosuj go jako pierwszy tag pod tagiem nagłówka w Widoki> udostępnione> Layout.cshtml
tylko wskazówka