好吧,我正在开发一个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.怎么做?我的代码出了什么问题?
答案 0 :(得分: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
答案 1 :(得分:0)
看起来您只在当前显示的页面(活动标签页)上执行脚本。
如果要在其他选项卡上执行它,则应在打开它们时将事件侦听器附加到新选项卡(并且在关闭选项卡时不要忘记将其删除)。您可以在此页面获取此功能的有用摘要:
https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads#WebProgressListeners