我正试图在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>
非常感谢你。
答案 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();
});