Как заставить Iframe запускать причуды в стандартном родительском фрейме
У нас есть родительская страница, которая должна работать в стандартном режиме IE9, выполняя команды HTML5. Ниже у нас есть iframe, который должен работать в режиме совместимости (IE7/8).
В IE9, как я понимаю, iframes наследует свой тип документа от родительского. это верно? Есть ли решение этой проблемы? Можно ли каким-то образом выполнить iframe с типом doctype в стандартном режиме родительского фрейма doctype? спасибо тал
1 ответ
Невозможно запустить другой режим рендеринга в дочернем iframe в IE9, как это официально зарегистрировано здесь: http://msdn.microsoft.com/en-us/library/gg558056(v=vs.85).aspx (выделение добавлено)):
Хотя более новый механизм рендеринга используется только тогда, когда Windows Internet Explorer обнаруживает, что HTML-страница запросила самый высокий уровень поддержки стандартов, это не всегда верно для дочерних страниц, которые могут быть загружены в элементы frame и iframe. Поскольку одновременно может быть активен только один движок рендеринга, режим IE9 также включает эмуляцию для режима Quirks.
Однако, как говорится, вы можете активировать "эмуляцию режима quirks", в результате чего механизм рендеринга IE9 активируется, но несколько меняет свое поведение в соответствии со старым режимом quirks.
Демонстрация JSBin: http://jsbin.com/ozejuk/1/
В этом примере есть div со стилем background: #ff0000; background: 00ff00; border-radius: 30px
... в режиме причуд, шестнадцатеричные цвета без #
принимаются В режиме IE9 их нет. Загрузка демонстрации в IE9 покажет красный div на родительской странице и зеленый div (но все еще с закругленными углами) в iframe.
Как вызвать эмуляцию режима причуда в iframe: http://msdn.microsoft.com/en-us/library/gg558096(v=vs.85).aspx
Короткая версия: опустите DOCTYPE, добавьте: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Полный список эффектов, которые имеет эмуляция режима при отображении: http://msdn.microsoft.com/en-us/library/gg558047(v=vs.85).aspx