IE11中“Automation server can't create object”运行时错误的解决问询
解决IE11中“Automation server can't create object”错误(针对Msxml2.DOMDocument)
这个报错在IE11里很常见,根源是IE11对旧版ActiveX组件的限制比IE8严格得多——Msxml2.DOMDocument.4.0这类早期ActiveX组件在IE11的默认安全策略下可能被直接禁用,而且IE11已经支持标准的XML处理API,完全没必要依赖ActiveX了。下面给你几个可行的解决办法:
首选方案:改用标准浏览器DOM API替代ActiveX
这是最稳妥、最符合现代Web标准的方案,不仅能解决IE11的问题,还能让代码兼容其他现代浏览器。把你代码里创建ActiveX DOM的部分替换成DOMParser(IE11原生支持):
原代码中创建ActiveX的片段:
var newDOM = new ActiveXObject("Msxml2.DOMDocument.4.0"); // 报错行 newDOM.async = false; newDOM.resolveExternals = false; var tempDOM = new ActiveXObject("Msxml2.DOMDocument.4.0"); tempDOM.async = false; tempDOM.resolveExternals = false;
替换为标准API实现:
// 使用IE11支持的标准DOMParser创建XML文档 var parser = new DOMParser(); // 创建空的XML文档(如果需要加载现有XML,把第一个参数换成XML字符串即可) var newDOM = parser.parseFromString("", "text/xml"); newDOM.resolveExternals = false; // 保留原需求的配置 var tempDOM = parser.parseFromString("", "text/xml"); tempDOM.resolveExternals = false;
DOMParser是W3C标准API,默认就是同步处理的,所以不需要设置async=false,完全能替代原来的ActiveX功能。
备选方案1:调整IE11安全设置(仅限内部受控环境)
如果你的系统必须保留ActiveX组件,可以尝试修改IE11的安全设置来允许该组件运行,但不推荐公网站点使用,会降低浏览器安全性:
- 打开IE11,点击右上角设置图标 → 选择「Internet选项」
- 切换到「安全」标签,选择你的站点所在的区域(比如「本地Intranet」)
- 点击「自定义级别」,在弹出的设置面板中找到「ActiveX控件和插件」区域:
- 将「对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本」设置为「启用」或「提示」
- 如果组件未签名,还要将「下载未签名的ActiveX控件」设置为「提示」或「启用」
- 重启IE11后生效
备选方案2:升级到更高版本的Msxml组件
如果一定要用ActiveX,可以尝试使用更新版本的Msxml组件,比如Msxml2.DOMDocument.6.0,它在IE11中的兼容性更好:
var newDOM = new ActiveXObject("Msxml2.DOMDocument.6.0"); newDOM.async = false; newDOM.resolveExternals = false; var tempDOM = new ActiveXObject("Msxml2.DOMDocument.6.0"); tempDOM.async = false; tempDOM.resolveExternals = false;
不过这个方案还是依赖ActiveX,长远来看不如标准API可靠。
另外检查了你的代码其他部分,innerText在IE11中是支持的,不需要修改;如果未来要兼容更多浏览器,可以考虑换成textContent,但当前场景下没问题。
内容的提问来源于stack exchange,提问作者Ayush Pandey




