我在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
答案 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事件监听器。然后,您可以在新内容加载时重新计算链接数。