我在Android浏览器中运行一个包含以下代码的应用程序..
if (typeof XPathResult != "undefined") {
//use build in xpath support for Safari 3.0
var xmlDocument = doc;
if (doc.nodeType != 9) {
xmlDocument = doc.ownerDocument;
}
results = xmlDocument.evaluate( xpathExpr,
doc,
function(prefix) {
return namespaces[prefix] || null;
},
XPathResult.ANY_TYPE,
null );
var thisResult;
result = [];
var len = 0;
do {
thisResult = results.iterateNext();
if (thisResult) {
result[len] = thisResult;
len++;
}
} while ( thisResult );
}
else {
try {
if (doc.selectNodes) {
result = doc.selectNodes(xpathExpr);
}
} catch (ex) {}
}
return result;
但是当我在Firefox中运行这个应用程序时,if if语句并且一切正常..
但在Android浏览器中它给出了错误... XPathResult未定义... 这个时间控制来到else语句,甚至在这里它显示selectNodes是unfind和。所以结果是null,而在Firefox中它给出了节点列表..
真的需要它完成......需要帮助..
谢谢......
答案 0 :(得分:2)
Android浏览器不支持XPath。 This Android issue声明它缺少XmlDocuments,尽管document.evaluate对我来说也失败了(仅用于测试,我对XmlDocuments感兴趣)
但丹在7月19日发表的评论称其正在研发3.0版本 Where is XPathEvaluator in android web browser?
不幸的是3.x仅适用于平板电脑,所以我们必须等待很长时间才能发布IceCream并可用于手机。
这是浏览器所处的另一种情况,如this message中所述(没有回复)浏览器声称实现XPath 3.0,但事实是它不可用,所以返回true是一个谎言。