document.evaluate无法在Chrome中运行?

Ski*_*zit 2 javascript xpath dom google-chrome document.evaluate

我有以下......

 var result = doc.evaluate("//input[@class=\"form_field_as as-input\"]", 
                           context, 
                           null, 
                           XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
                           null);
    for(var i = 0; i < result.snapshotLength; i++) {
    a[i] = result.snapshotItem(i);
}
return a;
Run Code Online (Sandbox Code Playgroud)

我正在评估的表达式来自输入.代码在FireFox中工作正常,但是当我在Chrome上测试时,它不会返回任何内容.我究竟做错了什么?

我正在评估的输入是......

<input type="text" id="sharees" class="form_field_as">
Run Code Online (Sandbox Code Playgroud)

小智 5

来自http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator-evaluate

contextNode Node
context是该XPath表达式的评估上下文节点.如果是由铸造获得的XPathEvaluator Document那么这必须由同一文件所拥有,而且必须是Document,Element, Attribute,Text,CDATASection, Comment,ProcessingInstruction,或 XPathNamespace节点.如果上下文节点是a Text或a CDATASection,则上下文被解释为XPath所见的整个逻辑文本节点,除非该节点为空,在这种情况下它可能不用作XPath上下文.

所以,你context必须是这些类的一些实例.我想你可能根本就没有设置这个变量.您也可以使用null,并且上下文将成为您评估表达式的节点.

除此之外,千万注意,//input[@class='form_field_as as-input']是一个绝对的表达式,它会从任何方面返回相同的结果(外文档上下文时,不允许" XPathEvaluator是由铸造获得的Document").