【发布时间】:2011-10-04 16:14:42
【问题描述】:
我有一个将 Outlook Web 应用程序放入 iframe 的 Web 应用程序。 这在大多数浏览器中运行良好,但在 IE9 中失败,并在 Outlook 的 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 并且没有问题。
但是,当我在 iframe 中运行包含 Outlook 邮件的应用程序时,我看到 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">
看起来 iframe 中的 JavaScript 正在运行,就好像它与版本无关。当然它仍然是孤立的,所以我不能按照this hack 对这个函数进行猴子补丁。
如何强制 iframe 内容以 IE7 模式运行 JavaScript,与网站的其他部分不同?我们不想编辑 iframe 中的代码?我们不想这样做,因为它只是股票展望网络应用程序。如果我们必须去那里,我们只会去修复他们的 JavaScript 而不是修复元数据。
【问题讨论】:
标签: javascript internet-explorer iframe internet-explorer-9