Javascript 使用google chrome扩展在facebook帖子中添加额外按钮

Javascript 使用google chrome扩展在facebook帖子中添加额外按钮,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我成功地跟踪了所有“uiStreamSource”,其中包含与每个facebook帖子(状态、图像等)相关联的链接,在日期旁边添加一个额外按钮,以便使用google chrome扩展执行其他任务。此按钮执行预定义的任务,在此上下文中不必提及 我写了这个内容脚本: contentscript.js 每次加载facebook页面时,警报会向我显示10个检测到的类(即10篇帖子)。但当我向下滚动时,会出现新的帖子,而这段代码无法检测到它们。既然我需要更新所有帖子中的所有uiStreamSource节点

我成功地跟踪了所有“uiStreamSource”,其中包含与每个facebook帖子(状态、图像等)相关联的链接,在日期旁边添加一个额外按钮,以便使用google chrome扩展执行其他任务。此按钮执行预定义的任务,在此上下文中不必提及

我写了这个内容脚本:

contentscript.js

每次加载facebook页面时,警报会向我显示10个检测到的类(即10篇帖子)。但当我向下滚动时,会出现新的帖子,而这段代码无法检测到它们。既然我需要更新所有帖子中的所有uiStreamSource节点,我该如何解决这个问题

更新

我在contentscript.js中尝试了以下代码:

load();
document.addEventListener("DOMNodeInsertedIntoDocument", load, false);

function load(){
    var nodeslist=document.getElementsByClassName("uiStreamSource");
    alert(nodeslist.length);
}
第一次运行时,我获得了正确的当前节点数(当前facebook帖子),但一旦向下滚动并获取更多帖子,就会显示警报,指示调用了加载函数,但打印的节点数为0。为什么呢


提前感谢。

收听滚动事件并将任何新帖子添加到
节点列表
。您还可以使用setInterval来捕获用户不滚动时添加的任何帖子。

您可以添加
DomainNodeInserted
事件,并通过检查其类来检查要插入的元素是否为帖子


或者一个简单的解决方案是使用插件。当插入具有指定选择器的元素时,它可以调用回调函数。

我使用了您的第一个建议,并将此代码写在contentscript.js load()中;document.addEventListener(“DOMContentInserted”,load,false);函数load(){var nodeslist=document.getElementsByClassName(“uiStreamSource”);警报(nodeslist.length);}结果是:警报第一次显示10篇文章,这很好。当我向下滚动时,会显示新帖子,同时也会显示警告,但值为0。一定是出了什么事,你能给我一个指针吗?谢谢
load();
document.addEventListener("DOMNodeInsertedIntoDocument", load, false);

function load(){
    var nodeslist=document.getElementsByClassName("uiStreamSource");
    alert(nodeslist.length);
}