XPathについては、次を試してください。
// input [@ type = "hidden" and @ name = "val" and position()= 1] / @ value
GreaseMonkeyスクリプトで使用するには、次のようにします。
var result = document.evaluate(
"//input[@type='hidden' and @name='var' and position()=1]/@value",
document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
);
var hiddenval = result.snapshotItem(0);
if (hiddenval)
alert("Found: " + hiddenval.nodeValue);
else
alert("Not found.");
厳密に言えば"position()=1"
、XPathフィルターでの使用は絶対に必要というわけではありません。とにかく、最初に返された結果のみが(を介してsnapshotItem(0)
)使用されるためです。しかし、なぜ実際に必要なものよりも大きな結果セットを作成するのでしょうか。
編集:このORDERED_NODE_SNAPSHOT_TYPE
タイプのXPath結果を使用すると、ノードをドキュメント順に取得できます。つまり、結果の最初のノードがドキュメントの最初のノードにもなります。