使用谷歌浏览器扩展程序在Facebook帖子中添加一个额外的按钮

时间:2013-01-26 21:48:50

标签: javascript google-chrome-extension

我成功地跟踪了所有“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.这是为什么?

先谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

收听滚动事件,并将所有新帖添加到nodeslist。您也可以使用setInterval来捕获用户未滚动时添加的任何帖子。