ActiveX控件方便用户在网页中插入各种效果,但是并不是所有浏览器都支持该控件。ActiveX是微软独有的,只有基于IE内核的浏览器才能使用。当出现如上错误,可以将通过该控件创建的对象定义为本地的JavaScript对象。
//判断浏览器是否支持ActiveX控件
if(window.ActiveXObject){
//支持-通过ActiveXObject的一个新实例来创建XMLHttpRequest对象
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//不支持
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
若提示activexobject没有安装,则在Internet 选项 -> 安全 里进行修改。
JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用。使用方法:
newObj = new ActiveXObject( servername.typename[, location])
ActiveXObject 对象语法有这些部分:
其中newObj是必选项。要赋值为 ActiveXObject 的变量名。
servername是必选项。提供该对象的应用程序的名称。
typename是必选项。要创建的对象的类型或类。
location是可选项。创建该对象的网络服务器的名称。
Automation服务器至少提供一类对象,例如字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。
链接:https://blog.csdn.net/qwdx1k2/article/details/23209481
其他解决代码:
try {
xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
} catch(e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlHttp==null)
xmlHttp = new XMLHttpRequest();
var xhr;
//创建XHR对象的函数
function createXHR() {
try {
return new XMLHttpRequest();
} catch (e) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
//用以创建XMLHttpRequest对象
//下面是兼容多种浏览器的XMLHttpRequest对象的创建方法
//JScript code
var XMLHttp=null;
try{
XMLHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e) {
try {
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if (XMLHttp==null){
XMLHttp=new XMLHttpRequest();
}
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
var url = "目标地址/xml";
var asyncDone = false;
try {
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = onReadyStateChange;
xmlhttp.send(null);
// loop so that the program from quiting
while (!asyncDone) {
WScript.Sleep(100);
}
WScript.Echo(xmlhttp.responseText);
} catch (e) {
WScript.Echo(e);
}
function onReadyStateChange() {
WScript.Echo("readyState: " + xmlhttp.readyState);
if (xmlhttp.readyState == 4) {
asyncDone = true;
}
}
var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
if(xmlHttp==null)
xmlHttp=new XMLHttpRequest();