我发现IE 11中不支持XPathEvaluator,但是我想知道是否有适当的检测机制来检查它是否存在,如果没有回落到IE中的selectSingleNode方法。IE11中的XPathEvaluator检测
事情与此类似但每当我以这种方式检查XPathEvaluator它在IE 11炸毁,但在Firefox/Chrome工作
if (XPathEvaluator) {
var xpe = new XPathEvaluator();
...... evaluation logic
return results.singleNodeValue;
}
else {
return xmlDoc.selectSingleNode(elPath);
}
用来依靠window.ActiveXObject是否存在等调用的selectSingleNode上的逻辑然而该属性已经在IE 11中被删除,导致XPathEvaluator逻辑被击中。
我宁愿检测此功能是否存在,也不检查浏览器版本,因为功能和功能在不断变化。
这是我的简单测试用例。
IE 11会提醒我不是IE弹出窗口,然后炸开XPath。
FF/Chrome会提醒我不是IE浏览器弹出,然后警报XPathEvaluator是一个去。
function selectSingleNode()
{
// previous logic relied on this to call XPathEvaluator
if(window.ActiveXObject)
{
alert('Im IE');
}
else
{
alert('I am Not IE');
}
// I wanted to do something like this.
if(XPathEvaluator)
{
alert('XPathEvaluator is a go');
}
else
{
alert('XPathEvaluator is a no go');
}
}
评价检查是完美的,我没有意识到它。 – crackhaus