浏览器兼容的JS写法总结
|
2. 多余的逗号 五、XML
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
2. 创建DOM
function createXmlDom() {
var oXmlDom;
if (Window.ActiveXObject) { // IE
oXmlDom = new ActiveXObject("Microsoft.XmlDom");
} else { // Firefox
oXmlDom = document.implementation.createDocument("", "", null);
}
}
3. 加载XML
Document.prototype.loadXML = function(sXml) {
var oParser = new DOMParser();
var oXmlDom = oParser.parseFromString(sXml, "text/xml");
while (this.firstChild) this.removeChild(this.firstChild);
for (var i = 0; i lt; oXmlDom.childNodes.length; i++) {
var oNewNode = this.importNode(oXmlDom.childNodes[i], true);
this.appendChild(oNewNode);
}
}
}
nbsp;nbsp;nbsp;nbsp;nbsp; 这样在IE和Firefox就可以调用loadXML方法了。 4. XPath支持
var lstNodes = oXmlDom.documentElement.selectNodes("employee/name");
for (var i = 0; i lt; lstNodes.length; i++) {
alert(lstNodes[i].firstChild.nodeValue);
}
nbsp;nbsp;nbsp;nbsp; Firefox:nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
var oEvaluator = new XPathEvaluator();
var oResult = oEvaluator.evaluate("employee/name", oXmlDom.documentElement, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var oElement = oResult.iterateNext();
while (oElement) {
alert(oElement.firstChild.nodeValue);
oElement = oResult.iterateNext();
}
nbsp; (2)解决方法:比较好的方法给Firefox的Element添加selectNodes方法。nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
if (isFirefox) { // 需要浏览器检测
Element.prototype.selectNodes = function(sXPath) {
var oEvaluator = new XPathEvaluator();
var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var aNodes = new Array();
if (oResult != null) {
var oElement = oResult.iterateNext();
while (oElement) {
aNodes.push(oElement);
oElement = oResult.iterateNext();
}
}
return aNodes;
}
}
nbsp;nbsp; 这样在IE和Firefox中就都可以调用selectNodes方法了。nbsp;nbsp; 5. XSLT支持
oXmlDom.load("employee.xml");
oXslDom.load("employee.xslt");
var sResult=oXmlDom.transformNode(oXslDom);
nbsp;nbsp;nbsp; Firefox:nbsp;nbsp;nbsp;nbsp;nbsp;
var oProcessor = new XSLTProcessor();
oProcessor.importStylesheet(oXslDom);
var oResultDom = oProcessor.transformToDocument(oXmlDom);
var oSerializer = new XMLSerializer();
var sXml = oSerializer.serializeToString(oResultDom, "text/xml");
alert(sXml);
nbsp; (2)解决方法:比较好的方法给Firefox的Node添加transferNode方法。nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
if (isFirefox) { // 需要浏览器检测
Node.prototype.transformNode = function(oXslDom) {
var oProcessor = new XSLTProcessor();
oProcessor.importStylesheet(oXslDom);
var oResultDom = oProcessor.transformToDocument(oXmlDom);
var oSerializer = new XMLSerializer();
var sXml = oSerializer.serializeToString(oResultDom, "text/xml");
return sXml;
}
}
nbsp;nbsp; 这样在IE和Firefox中就都可以调用transferNode方法了。 以上就是针对浏览器兼容的JS写法的总结,希望对大家的学习有所帮助。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


