我成功地跟踪了所有“uiStreamSource”,其中包含与每个facebook帖子相关联的链接(状态,图像等),以在日期旁边添加一个额外的按钮,以使用Google Chrome扩展程序执行其他任务。此按钮执行预定义的作业,在此上下文中并不重要。
我写了这个内容脚本:
contentscript.js
var nodeslist=document.getElementsByClassName("uiStreamSource");
alert(nodeslist.length);
每次加载Facebook页面时,警报会向我显示10个检测到的类别(即10个帖子)。但是当我向下滚动时,会显示新帖子并且此代码无法检测到它们。由于我需要更新所有帖子中的所有uiStreamSource节点,我该如何解决这个问题?
更新
我在contentscript.js中尝试了这段代码:
load();
document.addEventListener("DOMNodeInsertedIntoDocument", load, false);
function load(){
var nodeslist=document.getElementsByClassName("uiStreamSource");
alert(nodeslist.length);
}
第一次运行时,我得到正确数量的当前节点(当前的facebook帖子),但是一旦我向下滚动并且提取了更多帖子,警报就会显示,表明已调用加载函数但打印的节点数是0.这是为什么?
先谢谢。
答案 0 :(得分:2)
您可以添加DOMNodeInserted
事件,并通过检查其类来检查要插入的元素是否为帖子。
或者一个简单的解决方案是使用jcade插件。当插入具有指定选择器的元素时,它可以调用回调函数。
答案 1 :(得分:0)
收听滚动事件,并将所有新帖添加到nodeslist
。您也可以使用setInterval来捕获用户未滚动时添加的任何帖子。