You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动