创建独立于浏览器的Jscript代码的最佳方法是什么?必须在其中创建DOMDocument?
我有这段代码(摘自@MartinHonnen对我的问题How can make an XSLT Javascript extension function return a node-set?的回答):
function tokenize (input) {
var doc = new ActiveXObject('Msxml2.DOMDocument.6.0');
...
}
在MSXML 6.0 XSLT处理器(注意Jscript嵌入在xslt工作表中)和IE9中工作得很好(虽然奇怪的是不是每次都 - 步入调试模式似乎有点帮助),但没有'在IE8中做得很好,必须将类更改为Msxml2.DOMDocument.3.0
才能使其正常工作。显然IE8 Jscript支持MSXML 3.0但不支持更高版本。
所以现在我正在寻找使用DOMDocument的浏览器类型和浏览器版本无关的代码
谁可以提供给我这个?
我添加了Jquery
作为标记,因为可以在那里找到最佳解决方案
附带问题:在哪里可以找到哪个浏览器类型+版本支持哪个DOM类的概述?
答案 0 :(得分:1)
您需要调整CreateXmlHttpReq
函数来处理不同类型的Microsoft ActiveXObjects
function CreateXmlHttpReq(handler) {
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
var types = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];
for (var i = 0; i < types.length; i++) {
try {
xmlhttp = new ActiveXObject(types[i]);
break;
} catch(e) {}
}
}
if (xmlhttp) {
xmlhttp.onreadystatechange = handler;
}
return xmlhttp;
}