document.evaluate无法在Chrome中运行?

时间:2011-02-10 18:00:10

标签: javascript google-chrome dom xpath 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;

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

我正在评估的输入是..

<input type="text" id="sharees" class="form_field_as">

1 个答案:

答案 0 :(得分:5)

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

  

contextNode 类型 Node
  该   context是上下文节点   评估此XPath表达式。   如果XPathEvaluator是通过获得的   施放Document然后必须这样做   由同一文件拥有并且必须   是DocumentElement,   AttributeTextCDATASection,   CommentProcessingInstruction或   XPathNamespace节点。如果是上下文   节点是TextCDATASection,   然后将上下文解释为   整个逻辑文本节点如所见   XPath,除非节点为空   在哪种情况下,它可能不会作为   XPath上下文。

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

除此之外,请注意//input[@class='form_field_as as-input']是一个绝对表达式,它将从任何上下文返回相同的结果(当通过强制转换XPathEvaluator时,不允许外部文档上下文Document)。