var allTags = document.evaluate("//*[contains(@src,'"+imgSrc+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
這是給錯誤代碼的工作,它給:document.evaluate不會從內容腳本
Uncaught Error: TYPE_ERR: DOM XPath Exception 52
有人能告訴我是什麼問題?
var allTags = document.evaluate("//*[contains(@src,'"+imgSrc+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
這是給錯誤代碼的工作,它給:document.evaluate不會從內容腳本
Uncaught Error: TYPE_ERR: DOM XPath Exception 52
有人能告訴我是什麼問題?
我沒有一個確切的答案,但我可以猜測並給出解決方法。
首先解決:將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秒後更改邊界,使用調用來評估您的問題並以正確的方式遍歷元素。
'imgSrc'的值是什麼? – Prusse
這是一條路。出於測試目的,我們假設它是'http:// localhost/logo.png'。我最終爲此使用了jQuery,但我仍然希望得到這個答案,因爲jQuery不是很輕量級的。 – Bogdacutu