【问题标题】:jQuery 2.x issue on addEventListener while using Microsoft Web Browser OCX control使用 Microsoft Web 浏览器 OCX 控件时 addEventListener 的 jQuery 2.x 问题
【发布时间】:2016-07-06 10:28:54
【问题描述】:
我在 Progress ABL 容器上使用 IE OCX,并通过在 Windows 注册表上(在 FEATURE_BROWSER_EMULATION 上)添加新的 DWORD 条目来强制模拟 IE10。我想在这个嵌入式浏览器上打开的 web 文件包括 jQuery 版本 2.2.4,我收到脚本错误:
行:3573 [document.addEventListener("DOMContentLoaded", completed );],
字符:4,
错误:对象不支持属性或方法“addEventListener”
代码:0,
网址:文件路径/jquery-2.2.4.js。
即使我强制模拟 IE11 并使用 jQuery 2.x,同样的错误仍然存在。但是如果我使用 jQuery 1.12.4 就没有错误。模拟版本是正确的。那是微软网络浏览器ocx的问题吗?我的机器上有 IE11。
任何帮助将不胜感激!谢谢!!
【问题讨论】:
标签:
jquery
internet-explorer
emulation
ocx
ieframe.dll
【解决方案1】:
FEATURE_BROWSER_EMULATION 确实改变了 userAgent。但是我在我的旧网页上发现了这样的文档类型规范:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 迫使浏览器以怪癖模式呈现页面,因此发生了 jquery 错误。所以我找到了3种方法来解决这个问题(以确保标准模式):
- 使用
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- 对新网页使用“
<!DOCTYPE html>”并遵循 html5 标准
- 指定元标记:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
这也很有帮助:doctype overview
【解决方案2】:
您将需要使用 jQuery 的 1.x 分支,因为 2.x 分支删除了许多与旧浏览器和 IE 兼容所需的遗留代码(这是 OCX 控件将使用的)