Greasemonkey脚本不工作,如预期在Reddit

Greasemonkey script not working as expected on Reddit

本文关键字:Reddit 脚本 工作 Greasemonkey      更新时间:2023-09-26

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

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

必须是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检测AJAX事件