2012-03-29 17 views
5

Mam ramkę, która wymaga trybu zgodności, ale ramka nadrzędna wydaje się ustawiać tak, aby następujący znacznik wewnątrz ramki nic nie robił.Wymuszenie IE9 w trybie zgodności przy użyciu javascript

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

Czy mimo to stosuje się tryb zgodności tylko do ramki lub czy ramka stosuje tryb zgodności do ramki rodzica.

Zastanawiam się, czy istnieje metoda javascript do przełączania trybów Mogłabym zastosować ją do ramki nadrzędnej z ramki podrzędnej.

+0

Niestety nie można zrobić. W ramkach IE zawsze używaj trybu renderowania dokumentu nadrzędnego. Zakładam, że ponieważ nie można zmienić dokumentu nadrzędnego, że nie znajdują się one w tej samej domenie, więc granice między domenami uniemożliwiałyby zmianę trybu renderowania dokumentu nadrzędnego z ramki. – pseudosavant

+0

Jestem w tej samej domenie, ale jest to starsza aplikacja, tysiące stron. Po prostu ustawienie trybu kompatybilności na całym routingu wydaje się wymagać więcej problemów na drodze, gdy wsparcie IE7 zaczyna być stopniowo wycofywane. Jednak jeśli mogę zmienić dziecko w dokumencie rodziców na jednej stronie, właśnie tego chciałbym. Granice między domenami nie stanowią problemu w moim przypadku. – Serhiy

+0

Jeśli otworzysz ramkę iframe przy otwartej, to iframe będzie mieć dostęp do otwieracza, aby zrobić coś takiego jak opener.set_XUA ("IE = EmulateIE7"). Aby to zrobić, możesz użyć polecenia "Otwórz" z nazwą elementu iframe jako elementu docelowego, aby korzystać z elementu iframe do otwierania strony. To może być więcej kłopotu niż na to zasługuje. – Tei

Odpowiedz

2

Więc oto co ja zebrane.

Jedyną rzeczą, która wydaje się działać, jest sposób metatag.

Jednak wygląda na to, że nie działa w ramkach, ponieważ IE9 wyłączył możliwość, że jedna ramka jest innego typu niż inna.

Meta tag nie może być również poprzedzona tagami skryptu lub linku, tylko i innymi metatagami z tego, co zauważyłem, w przeciwnym razie również się nie powiedzie.

TEST CASE:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Test test</title> 
     <meta name="keywords" content="keywords, keyword, keyword phrase, etc."> 
     <!--<link href="test.css" rel="stylesheet" type="text/css" />--> 
     <!--<script type="text/javascript">alert('test');</script>--> 
     <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    </head> 
    <body> 
     inline-block <div style="display:inline-block">test</div> 
    </body> 
</html> 
1

Z góry mojej głowy można spróbować utworzyć metatag i wstawić go do głowicy ramki rodzica. Nie jestem jednak pewien, czy to wymusiłoby emulację.

var meta = document.createElement('meta'); 
meta.setAttribute('http-equiv', 'X-UA-Compatible'); 
meta.setAttribute('content', 'IE=EmulateIE7'); 

parent.document.getElementsByTagName('head')[0].appendChild(meta); 
+0

Niestety to nie działa ... :( – Serhiy