0

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

我写了这个内容脚本:

内容脚本.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。这是为什么?

提前感谢。

4

2 回答 2

2

您可以添加一个DOMNodeInserted事件并通过检查其类来检查要插入的元素是否是帖子。

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

于 2013-01-27T04:56:22.933 回答
0

收听滚动事件并将任何新帖子添加到nodeslist. 您也可以使用 setInterval 来捕捉用户不滚动时添加的任何帖子。

于 2013-01-26T22:38:41.523 回答