2

私は次のものを持っています..

 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">
4

1 に答える 1

5

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

contextNode この XPath 式を評価するための is コンテキスト ノードですNode
contextXPathEvaluator が のキャストによって取得された場合、Documentこれは同じドキュメントによって所有されている必要がありDocumentElementAttributeTextCDATASectionCommentProcessingInstruction、または XPathNamespaceノードである必要があります。コンテキスト ノードがTextまたはCDATASectionである場合、ノードが空の場合を除き、コンテキストは XPath から見た論理テキスト ノード全体として解釈されます。

したがって、contextこれらのクラスのインスタンスである必要があります。おそらく、この変数をまったく設定していないと思います。を使用することもできnull、コンテキストは、式を評価しているノードになります。

//input[@class='form_field_as as-input']それに加えて、は絶対式であり、どのコンテキストからも同じ結果を返すことに注意してください( "をキャストして " を取得した場合XPathEvaluatorDocument、ドキュメント コンテキスト外は許可されません)。

于 2011-02-10T19:04:49.990 に答える