19

Mam stronę z ramką iframe, a element iframe zawiera kod, który musi działać w trybie dziwactwa (jest to program Microsoft Outlook Outlook Web Access, więc nie jest to nasz kod, który i tak moglibyśmy naprawić). IE9 wprowadził "funkcję", która, gdy ramka nadrzędna jest w trybie dokumentu IE9, wymusza również wszystkie ramki iframe w tym samym trybie dokumentu. To łamie kod, który mamy iframe.Wymuś IE9 w tryb dziwactwa?

Miałem nadzieję, że był to błąd w IE9, ale mój bilet został odrzucony jako „projektem” (here is the ticket jeśli zależy patrzeć)

nie mogę uruchomić całą stronę w trybie dziwactwa, ale Potrzebuję tego tylko na tej stronie. Czy istnieje sposób programowo włączyć renderowanie w trybie dziwactwa? Albo to albo sposób naśladowania naciśnięcia przycisku "widoku zgodności" - naciśnięcie tego prawie zmienia IE9 w IE8, co również działa dobrze.

Czy można wykonać jedną z tych czynności?

Odpowiedz

10

miałem swój sam problem i to dość intensywnie badane w kwietniu 2011. Od tego czasu jedynym sposobem posiadania dokumentu najwyższego poziomu w trybie „normy”, a dokument w iframe w dziecięcej "tryb dziwactwa" w IE9 polegał na użyciu metatagu, aby przeglądarka zachowywała się tak, jakby była IE8. (O ile mi wiadomo, tak jest nadal, a Microsoft nie ma zamiaru go zmieniać.) Istnieje wiele metatagów, których można użyć do zmiany trybu przeglądarki, ale ten, z którego korzystałem, zadziałał:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

Jeśli umieścisz ten metatail, wszystkie dokumenty powinny być prawidłowo renderowane (zgodnie z regułami IE8) zgodnie z ich typem dokumentu.

Należy jednak pamiętać, że uniemożliwia to korzystanie z dowolnej z nowo obsługiwanych funkcji css w IE9, nawet w dokumencie najwyższego poziomu. Nie będzie można korzystać z funkcji border-radius, box-shadow, nieprzezroczystości itp.

Istnieje więcej informacji na ten temat pod adresem Will an iframe render in quirks mode?, który zadaje bardziej ogólne pytanie dotyczące elementów iframe i doctypes w tekście.

+1

Tak, to jest rozwiązanie, które wykorzystaliśmy. To trochę bzdura, ale działa. –

+0

Odnawianie bardzo starego wątku, ale ten metatag idzie w głowę dokumentu najwyższego poziomu, prawda? Mam podobną sytuację, w której nie mam żadnej kontroli nad tym, co jest wyrenderowane wewnątrz dziwnego elementu iFrame, ale pełną kontrolę nad dokumentem najwyższego poziomu. Dzięki! – Rishi

-2

Powinieneś mieć różniące COMPAT tryby pomiędzy IFRAME i przyjmującego - patrz: http://blogs.msdn.com/b/cjacks/archive/2010/12/01/does-a-standards-web-page-inside-of-an-iframe-in-a-quirks-web-page-render-in-standards-or-quirks.aspx

Można określić trybu kompatybilnego chcesz jawnie, nawet więcej niż można za pomocą przycisku, za pomocą X- Kod zgodny z UA: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

HTH.

+2

Właśnie o to chodzi. Mogę * być * w stanie, ale zmienili to w IE9. Teraz wymusza tryb zgodności strony nadrzędnej na dowolne elementy podrzędne dla dzieci. –

Powiązane problemy