返回首页
当前位置: 主页 > 网络编程 > Php实例教程 >

创建兼容IE、火狐、chrome、oprea浏览器的xmlDom对象方法

时间:2016-12-11 20:53来源:知行网www.zhixing123.cn 编辑:麦田守望者

在IE和火狐下,可以直接创建xmlDom对象来载入xml文件,但是在chrome和opera等webkit内核的浏览器下,则只能通过xmlhttp方式进行获取。

在IE和火狐下,直接创建的xmlDom对象可以跨域访问xml文件。但xmlhttp为了安全性禁止跨域访问,当跨域访问时即会报错如下:

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

以下是一段兼容主流浏览器的xmlDom对象获取方法,仅供参考讨论,具体示例可参见本站首页的英语句子插件的效果(原版pjblog英语句子插件不支持webkit内核浏览器)。

//检测系统支持的XMLDom方式
function E_getControlPrefix() {
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o, o2;
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
o = new ActiveXObject(prefixes + ".XmlHttp");
o2 = new ActiveXObject(prefixes + ".XmlDom");
return E_getControlPrefix.prefix = prefixes;
}
catch (ex) {};
}
}
//创建xmldom对象
function loadXmlFile(xmlFile) {
var xmlDom = null;
if (window.ActiveXObject) { //支持IE浏览器,可跨域
xmlDom = new ActiveXObject(E_getControlPrefix() + ".XMLDOM");
//xmlDom.loadXML(xmlFile);//如果用的是XML字符串
xmlDom.load(xmlFile); //如果用的是xml文件。
} else if (document.implementation && document.implementation.createDocument) { //支持火狐浏览器,可跨域
xmlDom=document.implementation.createDocument("","",null);
xmlDom.load(xmlFile);
} else if (window.XMLHttpRequest){ //xmlhttp方式,支持火狐、chrome、oprea等浏览器,但不可跨域
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", xmlFile, false);
xmlhttp.send(null);
if (xmlhttp.status == 200) {
xmlDom = xmlhttp.responseXML;
}
} else {
xmlDom = null;
}
return xmlDom;
}
注:

由于xmlhttp方式不允许跨域,所以访问非本域名地址下的xml文件时即会报错。当在本地以无域名的方式访问本地xml文件,应该也是一样当做跨域处理,所以也会同样的报错如下:

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

顶一下
(1)
100%
踩一下
(0)
0%
标签(Tag):xmlDom对象
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片