关于javascript, 在 new ActiveXObject("MSXML")时错误 解决办法
2008-10-17 10:43 jeff-zheng 阅读(2244) 评论(0) 收藏 举报系统清理后,不知什么原因, 运行以前写的创建 xml 、xsl 对象的代码总是报错,代码如下:
function CreateDocument(objectType) {
var aVersions, oXmlDom;
switch (objectType) {
case 1:
//使用"MSXML2.FreeThreadedDOMDocument.6.0"转换时出错
//大概查了一下,是安全性做了限制
aVersions = ["MSXML2.FreeThreadedDOMDocument.5.0",
"MSXML2.FreeThreadedDOMDocument.4.0",
"MSXML2.FreeThreadedDOMDocument.3.0",
"MSXML.FreeThreadedDOMDocument",
"Microsoft.XmlDom"
];
break;
case 2:
//使用"MSXML2.XSLTemplate.6.0"转换时出错
//大概查了一下,是安全性做了限制
aVersions = ["MSXML2.XSLTemplate.5.0",
"MSXML2.XSLTemplate.4.0",
"MSXML2.XSLTemplate.3.0",
"MSXML.XSLTemplate",
"Microsoft.XmlDom"
];
break;
default:
aVersions = ["MSXML2.DOMDocument.6.0",
"MSXML2.DOMDocument.5.0",
"MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0",
"MSXML.DOMDocument",
"Microsoft.XmlDom"
];
break;
}
for (var i = 0; i < aVersions.length; i++) {
try {
oXmlDom = new ActiveXObject(aVersions[i]);
break;
}
catch (error) {
// 不做任何处理
}
}
if (oXmlDom == null) {
throw new Error("MSXML没有安装");
}
return oXmlDom;
}
标红的位置总是出做,重新安装了msxml.mis、注册msxml(regsvr32 msxml4.dll)也不行,调试中找到错误原因:automation服务器不能创建对象,最后网上查询找到了解决办法:
一:主要是Scripting.FileSystemObject (FSO 文本文件读写)被关闭了,开启FSO功能即可,在“运行”中执行regsvr32 scrrun.dll
二:如果javascript脚本中报这个错误是因为IE的安全设置不允许运行未标记为安全的activeX控件 更改IE的安全设置,把相应的选项打开即可。
有时用上面“解决”中所提的方法不是100%成功的,因为毕竟导致同样现象的原因并不是只会有一个,这个亦是一个思路。如果是在安装某个软件后出现这种问题,可卸载该软件或重装一下!
浙公网安备 33010602011771号