2012-03-20 19 views
5

Pracuję nad produktem internetowym, który może być hostowany jako witryna intranetowa. Próbuję znaleźć programowy sposób na to, aby program IE9 nie przeszedł w tryb przeglądarki zgodności IE9, mimo że opcja "Wyświetl witryny intranetowe w widoku zgodności" może być włączona.Czy nagłówek http zgodny z X-UA rzeczywiście działa w IE9?

jestem testowania z tej strony html:

<!DOCTYPE HTML> 

<html> 
    <head> 
     <meta http-equiv="X-UA-Compatible" content="IE=9" /> 
     <title>Company</title> 
    </head> 
    <body> 
    </body> 
</html> 

Wrzuciłem to w IIS config:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <clear /> 
      <add name="X-UA-Compatible" value="IE=edge" /> 
     </customHeaders> 
    </httpProtocol> 

jako zalecana tutaj: https://stackoverflow.com/a/5887546 i sprawdzone nagłówki odpowiedzi w IE9 i zobacz:

X-UA-Compatible  IE=Edge 

Ale strona nadal umieszcza przeglądarkę w widoku zgodności Przeglądaj przeglądaj Tryb r.

Konsola pokazuje:

HTML1202: http://intranet-site/test.html is running in Compatibility View because 'Display intranet sites in Compatibility View' is checked. 
test.html 

Jest podobne pytanie tutaj: https://stackoverflow.com/a/3726605/1279516, w którym komentarz przez Jakuba od wybranej odpowiedzi sugeruje, że w IE9, nic nie można zrobić, aby zastąpić „display Intranetu w ustawieniu widoku zgodności. Jednak jego komentarz jest jedynym miejscem, które znalazłem na ten temat. Czy ktokolwiek może potwierdzić lub zaprzeczyć temu twierdzeniu?

Czy mogę jeszcze spróbować czegoś innego? Nie powinienem mówić wszystkim klientom, którzy wdrażają nasz produkt, do odznaczenia ustawienia "Wyświetl witryny intranetowe w widoku zgodności" dla wszystkich użytkowników.

+0

Który tryb dokumentu widzisz w narzędziach programistycznych IE Twojej witryny? – oryol

+0

Tryb dokumentu to w rzeczywistości standardy IE9. Zapewnia to renderowanie w trybie standardowym, ale nie wszystkie funkcje javascript są dostępne, prawda? – jcairney

+2

Nie, w rzeczywistości powinieneś sprawdzić tylko tryb dokumentu. Model przeglądarki jest parametrem początkowym, który określa sposób obliczania trybu dokumentu (domyślnie). Tak więc, jeśli masz prawidłowy tryb dokumentu, wszystko powinno działać zgodnie z oczekiwaniami. – oryol

Odpowiedz

2

O ile ktoś nie mówi inaczej, komentarz oryola sugeruje, że wszystkie funkcje są dostępne w trybie dokumentu, więc nie trzeba próbować kontrolować trybu przeglądarki, gdy otrzymasz żądany tryb dokumentu.

0

Wpadłem na podobny problem - strona nie wyświetlająca się prawidłowo w IE8/9, ponieważ Wyświetlane witryny intranetowe w widoku zgodności było włączone. Poproszenie wszystkich użytkowników o wyłączenie tego lub poproszenie o zasady grupowe i dodanie wyjątków Nie wiem, ile innych stron intranetowych, które tego wymagały, nie wchodziło w grę. Tryb dokumentu jest prawidłowy dzięki X-UA-Compatible: IE=edge. Ale wciąż miałem problemy z układem.

Przyczyna: Tryb zgodności powoduje IE wysłać innego agenta użytkownika do serwera. Dla IE8,9 jest to IE7. Niektóre z moich bibliotek ASP.NET przeprowadza na tej podstawie pewne sprawdzenia i renderuje specyficzny dla IE7 kod HTML/CSS, który powoduje problemy z układem.

Rozwiązanie: Modyfikacja UserAgent ciąg na serwerze do "IE9" Jeśli mówi "IE7". Oczywiście jest to brudne rozwiązanie, ponieważ teoretycznie może istnieć prawdziwy klient IE7. W mojej sprawie (Intranet) Wiem, że moi użytkownicy mają tylko IE> = 8. Zmiana UserAgent okazała się trudniejsza niż oczekiwano. Z powodzeniem zastosowałem this idea - pochodną podklasy od HttpWorkerRequest i przechwytywanie żądań dla UserAgent. To pośrednio przeciąża request.UserAgent i pomógł rozwiązać problem.