加载youtube评论后,加载firefox自动调用JavaScript

时间:2013-09-22 09:17:32

标签: javascript html ajax firefox-addon

我正试图在fire fox浏览器中构建附加组件。我使用page-mod,因此当登陆特定页面(Youtube)时会触发脚本,该脚本可以将数据传递给主脚本。但它无法与数据注释通信,因为它在页面加载后加载(使用ajax或其他东西)。请帮我! 我的例子:

main.js

pageMod.PageMod({
  include: "*.youtube.com",
  contentScriptFile: data.url("jquery-1.8.3.js"),
  contentScriptFile: data.url("element-getter.js"),
  contentScriptWhen: "end"          
});

元素-getter.js

var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; ++i) {
    divs[i].setAttribute("style", "border: solid red 1px;");
}

您可以在

中看到评论内容

<div id = watch-discussion></div>

非常感谢你。

2 个答案:

答案 0 :(得分:0)

使用setTimer并在计时器处理程序中检查注释DOM节点。完成评论处理后停止计时器。

另一种方法是从页面侦听XMLHTTPRequests并从这里获取评论

答案 1 :(得分:0)

由于内容是在初始页面加载后加载的,因此您应该使用MutatinObserver api。这将允许您在修改watch-discussion的内容时触发回调。

以下是我的某个扩展程序的摘录:

// create an observer instance
var observer = new page.defaultView.MutationObserver(function(mutations, obs) {
  stopTube._handleMutation(mutations, obs);
});

// configuration of the observer:
var config = { childList: true};

// pass in the target node, as well as the observer options
// Here instead of page.body, you should be using page.getElementById('watch-discussion'), otherwise you will have too many notifications. 
observer.observe(page.body, config);         

page.addEventListener('unload', function(evt) {
  // remember to stop observing when you are done
  observer.disconnect();

});