document.evaluate не будет работать из скрипта контента - PullRequest
0 голосов
/ 01 декабря 2011
var allTags = document.evaluate("//*[contains(@src,'"+imgSrc+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

Это код, который выдает ошибки, он выдает:

Uncaught Error: TYPE_ERR: DOM XPath Exception 52

Может кто-нибудь сказать мне, в чем проблема?

1 Ответ

1 голос
/ 02 декабря 2011

У меня нет точного ответа, но я могу угадать и дать обходной путь.

Сначала обойти: замените UNORDERED_NODE_SNAPSHOT_TYPE на тип, который не создает снимок (если вам не нужноэто так) и возвращает несколько узлов, таких как UNORDERED_NODE_ITERATOR_TYPE (или ANY_TYPE).

И мое предположение: после прочтения spec он скажет для этой функции 'TYPE_ERR: повышается, еслиРезультат не может быть преобразован для возврата указанного типа. '.Это может быть случай, когда он не может выделить ресурсы для создания снимка или что-то вроде этого (обходной путь предполагает это).

Редактировать:

Реальная проблема, скорее всего, не в вызовеdocument.evaluate означает, что в вашем коде вы делаете allTags.iterateNext, и этот вызов ожидает, что allTags будет * _NODE_ITERATOR_TYPE, а не * _NODE_SNAPSHOT_TYPE, использование allTags.snapshotItem не приводит к возникновению ошибки.Я написал пример на jsfiddle , он меняет границы через 2 секунды, используя вызов для оценки вашего вопроса и правильного перебора элементов.

...