2012-07-30 20 views
14

Mamy stronę nadrzędną, która musi działać w trybie standardowym IE9, wykonując polecenia HTML5. Pod spodem mamy element iframe, który musi działać w trybie zgodności (IE7/8).Jak zmusić Iframe do uruchomienia dziwactw w standardowej ramce rodzica

W IE9, jak rozumiem, elementy iframe dziedziczą swój typ dokumentu od rodzica. czy to jest poprawne? Czy istnieje rozwiązanie tego problemu? można, w jaki sposób, iframe być wykonywane z doctype dziwactw w ramce rodzica standardowego trybu doctype? Dzięki, Tal

+0

Zobacz tę odpowiedź -> http://stackoverflow.com/a/5624373/572939 – ManseUK

+0

możliwy duplikat trybu [Uruchom dziwactwa w jednej ramce i trybu standardowego w innym?] (http://stackoverflow.com/questions/4902255/run-quirks- tryb-in-one-frame-and-standards-mode-in-another) –

+1

Te nie zapewniają odpowiedzi - ponieważ wymusza to działanie całej strony w trybie IE7. Wymagane zachowanie polega na włączeniu trybu IE9 w trybie macierzystym, ale w trybie dziwactwa wewnątrz elementu iframe. – Tal

Odpowiedz

27

To nie jest możliwe, aby wywołać inny tryb renderowania w iframe dzieci w IE9, jak oficjalnie udokumentowane tutaj: http://msdn.microsoft.com/en-us/library/gg558056(v=vs.85).aspx (podkreślenie dodane):

Chociaż nowszy silnik renderowania służy jedynie gdy Eksplorator Windows Internet odkrywa, że ​​strona HTML zażądała najwyższego poziomu obsługi dla standardów, to samo nie zawsze jest prawdziwe dla stron podrzędnych , które mogą być ładowane w elementach ramki i elementu iframe. Ponieważ tylko jeden silnik renderujący może być aktywny w czasie, tryb IE9 zawiera również emulację dla trybu Quirks.

Jednak, jak mówi, to może spust „emulacja tryb dziwactw” która opuszcza silnik renderowania IE9 aktywny, ale zmienia jego zachowanie na kilka sposobów, aby dopasować tryb stare osobliwości.

JSBin demo: http://jsbin.com/ozejuk/1/

Ten przykład ma div stylem background: #ff0000; background: 00ff00; border-radius: 30px ... w trybie quirks, kolory hex bez # są akceptowane. W trybie IE9 nie są. Ładowanie wersji demo w IE9 pokaże czerwony div na stronie nadrzędnej i zielony div (ale wciąż z zaokrąglonymi rogami) w elemencie iframe.

Jak wywołać dziwactwa emulacji trybu w iframe: http://msdn.microsoft.com/en-us/library/gg558096(v=vs.85).aspx

Krótka wersja: pominięcie DOCTYPE, dodać: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

pełna lista emulacji Efekty trybu dziwactw ma na renderingu: http://msdn.microsoft.com/en-us/library/gg558047(v=vs.85).aspx

+0

Dzięki za odpowiedź, Nick. Zajrzę do tego później, dzisiaj lub w przyszłym tygodniu. – isherwood

+0

Niestety emulacja trybu dziwactwa nie wydaje się rozwiązać mojego problemu, który jest następujący: https://bugbase.adobe.com/index.cfm?event=bug&id=2928139 Jeszcze raz dziękuję za odpowiedź. Doceniam wysiłek, jaki włożysz w to. +1. – isherwood

+0

Wygląda na to, że w IE10 + możesz wywołać inny tryb renderowania u dziecka. zobacz http://stackoverflow.com/questions/26206688/ie11-quirks-mode-under-iframe-javascript-errors/41270772#41270772 –

Powiązane problemy