Greasemonkey脚本在Reddit上没有按预期工作

时间:2011-12-16 18:51:20

标签: javascript firefox greasemonkey

我在Firefox上为所有网站创建了以下Greasemonkey脚本。这是脚本。该脚本基本上获取页面上的所有链接并提醒链接数量。这只是我正在进行的项目的一小部分。

window.addEventListener("load", function(e) {
            var links = window.document.getElementsByTagName("a");
            //window.setTimeout(function(){alert(links.length);},3000);
            alert(links.length);
        }, false);

脚本对某些网站执行得很好,但是当我访问reddit时,脚本只返回2个链接,而不是页面上的所有链接。当我尝试搜索页面上的divs时,它也只返回2.

当我研究页面源时,有一些与内联javascript相关的内容。但我无法完全理解它。任何人都可以帮助我为什么这不起作用?

谢谢, SID

1 个答案:

答案 0 :(得分:1)

必须是AJAX内容加载。如果从调试器执行代码,它可以正常工作。所以唯一的解释是在load事件之后内容不存在。尝试将其包装在超时(丑陋,但这应该证明我的观点)。

setTimeout(testLinks, 3000);

function testLinks() {
    window.addEventListener("load", function(e) {
        var links = window.document.getElementsByTagName("a");
        //window.setTimeout(function(){alert(links.length);},3000);
        alert(links.length);
    }, false);

}

既然你知道问题是什么,你可以按照这个SO问题中的说明创建一个AJAX事件监听器。然后,您可以在新内容加载时重新计算链接数。

JavaScript detect an AJAX event