Firefox 下兼容IE操纵 XMLDocument 方式

开发中遇到要兼容FF,其中 IE 操纵 XMLDocument 的一些方法及属性 FF 下都没有
后来网上搜索参考在 js 里加入如下代码解决问题


if(!document.all){
// 为 XMLDocument 添加 loadXML 方法
XMLDocument.prototype.loadXML = function(xmlString){
var childNodes = this.childNodes;
for (var i = childNodes.length - 1; i >= 0; i--){
this.removeChild(childNodes[i]);
}
var dp = new DOMParser();
var newDOM = dp.parseFromString(xmlString, "text/xml");
var newElt = this.importNode(newDOM.documentElement, true);
this.appendChild(newElt);
}
// prototying the XMLDocument
XMLDocument.prototype.selectNodes = function(cXPathString, xNode){
if( !xNode ) { xNode = this; }
var oNSResolver = this.createNSResolver(this.documentElement)
var aItems = this.evaluate(cXPathString, xNode, oNSResolver,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
var aResult = [];
for( var i = 0; i < aItems.snapshotLength; i++){
aResult[i] = aItems.snapshotItem(i);
}
return aResult;
}
// prototying the Element
Element.prototype.selectNodes = function(cXPathString){
if(this.ownerDocument.selectNodes){
return this.ownerDocument.selectNodes(cXPathString, this);
}else{throw "For XML Elements Only";}
}
XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode) {
if( !xNode ) { xNode = this; }
var xItems = this.selectNodes(cXPathString, xNode);
if(xItems.length > 0){
return xItems[0];
}else{
return null;
}
}
// prototying the Element
Element.prototype.selectSingleNode = function(cXPathString) {
if(this.ownerDocument.selectSingleNode){
return this.ownerDocument.selectSingleNode(cXPathString, this);
}else{throw "For XML Elements Only";}
}
// 为 Firefox 下的 Node 添加 text 属性
Element.prototype.__defineGetter__( "text", function(){
return this.textContent;
}
);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值