为什么document.evaluate没有工作?

时间:2010-07-28 18:59:31

标签: javascript firefox xpath firefox-addon document.evaluate

我在Firefox扩展程序中使用它,无法让它工作。

var allLinks = document.evaluate(
                        '//a[@href]', 
                        window.document, 
                        null, 
                        XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
                        null);
window.alert(allLinks);

此警告[object XPathResult]。但是,以下内容始终返回0。 (页面上肯定有链接)。

window.alert(allLinks.snapshotLength);

3 个答案:

答案 0 :(得分:1)

如果它是firefox特定的,我假设你只使用新版本..你不能使用querySelectorAll吗?

document.querySelectorAll('a[href]')

另外 - 你是在DOM完全加载的时候做的吗?将其绑定到DOMContentLoaded或其他内容。

document.addEventListener('DOMContentLoaded', fn, false);

编辑:您的xpath适合我。它是在现有的加载页面的控制台中完成的。确定你在任何事情存在之前都要查询。

答案 1 :(得分:0)

你不想听的答案 - “对我有用”。

请参阅this example(警报3对我而言)。

您正在测试哪种浏览器和哪个版本?

答案 2 :(得分:0)

这很有用。

        var allLinks = top.document.getElementById("content").selectedBrowser.contentDocument.evaluate(
                            treeView.model[0].xpath, 
                            top.document.getElementById("content").selectedBrowser.contentDocument, 
                            null, 
                            XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
                            null);