0

好吧,我正在开发一个 firefox 插件,它会自动重新加载一组给定的 url,并进行一些修改。它不可能显示整个代码。所以,我只是复制粘贴给我错误的代码部分。

假设该DOMContentLoaded事件会在页面加载的所有内容中触发,并且它会正确执行。问题是,如果我打开一个新选项卡,则DOMContentLoaded不会在旧选项卡中触发事件。

//Any code here runs only for the first time u start the browser
window.addEventListener("load", function() { myExtension.init(); }, false);

var myExtension = { 
init: function()    
{
            var appcontent = document.getElementById("appcontent");
            if(appcontent)
            appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
},

onPageLoad: function(aEvent)
{

    var doc = aEvent.originalTarget; // doc is document triggered "onload" event
    //execute on one the top page (not on iframes)
        if ((aEvent.originalTarget.nodeName == '#document') && (aEvent.originalTarget.defaultView.location.href == gBrowser.currentURI.spec)) 
        {setTimeout(function(){showInError(doc.location='about:home'}, 500);}  
},
}

我想用简单的方式来写问题(对不起我的英语不好)

1)我运行firefox,并且标签(比如标签号1)根据我的需要不断重新加载。

2)如果我保持页面不间断(这就是它想要的),则标签 1 页面会继续重复加载

3)如果我打开一个新标签(比如标签号 2),新标签(标签号 2)开始按照我的意愿不断重新加载。但是,标签号。1 停止重新加载。

我想要的是继续重新加载标签号 1 和标签号。2. 怎么做?我的代码有什么问题?

4

2 回答 2

0

看起来您仅在当前显示的页面(活动选项卡)上执行脚本。

如果要在其他选项卡上执行它,则应在打开新选项卡时将事件侦听器附加到新选项卡(并且在关闭选项卡时不要忘记将其删除)。您可以在此页面获取此功能的有用片段:

https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads#WebProgressListeners

于 2012-05-30T11:28:23.317 回答
0

尝试使用 gBrowser 而不是 document.getElementById("appcontent");

gBrowser.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);

https://developer.mozilla.org/en/Code_snippets/On_page_load#Basic_onPageLoad_for_a_browser_window

于 2012-05-30T11:23:24.143 回答