Я работаю над надстройкой Firefox, а вместе с ним мне нужно следить за содержимым конкретного сайта и реагировать на изменения DOM. В настоящее время я использую комбинацию gBrowser.contentDocument.getElementsByClassName("class")
и прилагаю к ней DOMSubteeeModified
. Но я замечаю, что он работает только при активной вкладке. Когда я уйду с другой вкладкой, а изменения DOM на неактивной вкладке, это не сработает. Как мне обойти это? Firefox MDN довольно разбросан (и иногда устарел), это очень неприятно для новичка.Получить содержимое определенной вкладки (разработка надстройки Firefox)
Вот упрощенная версия того, что я делаю:
var MyExtension = {
init() : function() {
if("gBrowser" in window) {
gBrowser.addEventListener("DOMContentLoaded", function(e){this.onPageLoad(e);},false);
},
onPageLoad: function(e) {
var doc = e.originalTarget;
if((/http://xxxx.xyz/v/[0-9a-z]/).test(doc.location.href)) {
MyExtension.XXX.handler(e);
}
e.originalTarget.defaultView.addEventListener("unload", function(e){MyExtension.onUnload(e);}, false);
},
onUnload: function(e) {
if((/http://xxxx.xyz/v/[0-9a-z]/).test(e.originalTarget.location.href)) {
//remove listeners and nullify references to dom objects
}
};
MyExtension.XXX = {
handler : function(e) {
//get dom element with gBrowser.contentDocument.getElementsByClassName("class");
//bind DOMSubtreeModified listener, attach a function to handle the event
}
};
window.addEventListener("load", function(e) {
window.removeEventListener("load", load, false);
MyExtension.init();
}, false);