У меня есть веб-приложение, которое помещает веб-приложение Outlook в iframe.
Это работает довольно хорошо в большинстве браузеров, но не работает в IE9 с ошибкой в JavaScript внешнего вида:
SCRIPT438: Object doesn't support property or method '__defineGetter__'
uglobal.js, line 1 character 975667
Кажется, что происходит то, что функция __defineGetter__
устарела и отсутствует в IE9, хотя большинство других браузеров ее поддерживают. Почтовое приложение обычно работает в стандартном режиме IE7 - если я открываю веб-почту самостоятельно и нажимаю F12 (средства разработки), я вижу Browser Mode: IE9, Document Mode: IE7 standards
и проблем нет.
Однако, когда я запускаю приложение, в котором есть почта Outlook, в iframe, я вижу Browser Mode: IE9, Document Mode: IE9 standards
. Это относится к внешнему сайту, и нет очевидного способа узнать, как iframe рендерится в IE9.
Источник фрейма имеет заголовки, которые я ожидал:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "ht`tp://www.w3.org/TR/html4/strict.dtd">
Похоже, что JavaScript внутри iframe работает так, как будто это не так в отношении версии. Конечно, он все еще изолирован, поэтому я не могу подключить эту функцию в соответствии с этим хаком .
Как заставить содержимое iframe запускать JavaScript в режиме IE7, в отличие от остальной части веб-сайта? Мы не хотим редактировать код внутри iframe? Мы не хотим этого делать, так как это просто веб-приложение со стандартным внешним видом. И если бы нам пришлось пойти туда, мы бы просто исправили их JavaScript, а не метаданные.