var allTags = document.evaluate("//*[contains(@src,'"+imgSrc+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
これはエラーを与えるコードです。
Uncaught Error: TYPE_ERR: DOM XPath Exception 52
誰かが私に何が問題なのか教えてもらえますか?
var allTags = document.evaluate("//*[contains(@src,'"+imgSrc+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
これはエラーを与えるコードです。
Uncaught Error: TYPE_ERR: DOM XPath Exception 52
誰かが私に何が問題なのか教えてもらえますか?
正確な答えはありませんが、推測して回避策を提供できます。
最初の回避策:UNORDERED_NODE_SNAPSHOT_TYPE
スナップショットを作成しないタイプに変更し(そのようにする必要がない限り)、UNORDERED_NODE_ITERATOR_TYPE
(またはANY_TYPE
)のような複数のノードを返します。
そして私の推測:仕様を読んだ後、この関数について「TYPE_ERR:結果を変換して指定された型を返すことができない場合に発生します。」と書かれています。スナップショットなどを作成するためのリソースを割り当てることができない場合があります (回避策はそれを前提としています)。
編集:
本当の問題は、呼び出しではない可能性が最も高くdocument.evaluate
、コード内allTags.iterateNext
でこの呼び出しallTags
が *_NODE_SNAPSHOT_TYPE ではなく *_NODE_ITERATOR_TYPE であると想定されていることです。使用allTags.snapshotItem
すると、エラーがスローされません。私はjsfiddleでサンプルを書きました。それは、質問で評価する呼び出しを使用して 2 秒後に境界線を変更し、適切な方法で要素を反復処理します。