document.evaluate()
要素から特定の子要素を抽出するために使用しようとしてい<svg>
ます。しかし、それ自体を抽出するだけでは問題があり<svg>
ます。まではすべて抽出できます<svg>
が、それ以上は抽出できません。たとえば、これはうまくいきます:
document.evaluate('//*[@id="chart"]/div/div[1]/div', document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue)
これは私に(短縮)を与えます:
<div style="position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;" aria-label="Et diagram.">
<svg width="600" height="400" aria-label="Et diagram." style="overflow: hidden;"></svg>
<div aria-label="En repræsentation i tabelformat af dataene i diagrammet." style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;"></div>
</div>
そして、私は単純なことを仮定します
//*[@id="chart"]/div/div[1]/div/svg
私に与えるでしょう<svg>
-しかし、何も機能しません。すべての応答タイプを試しました:
for (var type=XPathResult.ANY_TYPE; type<XPathResult.FIRST_ORDERED_NODE_TYPE+1; type ++) {
console.dir(
document.evaluate('//*[@id="chart"]/div/div[1]/div/svg', document, null, type, null)
);
}
invalidIteratorState
、 nullsingleNodeValue
またはsnapshotLength
0のいずれかを取得します。
デモ -> http://jsfiddle.net/hw79zp7j/
evaluate()
聞いたことのない制限はありますか、それとも完全に間違っているだけですか?
明確にするために、私の最終的な目標は、たとえばGoogleの視覚化xAxis
<text>
要素を1行のコードで抽出できるようにすることです。現在のように (デモを参照) 、<svg>
複数のquerySelectorAll
/getElementsByTagName
などを使用して繰り返し処理する必要があります。xpath
Google 開発者ツールからを取得して、1 行で再利用するだけでよいでしょう。