Firefox扩展插件:主页覆盖意外行为

时间:2018-09-26 16:16:21

标签: firefox-addon firefox-webextensions manifest.json

这是我的manifest.json的一部分:

...
 "chrome_url_overrides" : {
    "newtab": "index.html"
  },
 "chrome_settings_overrides" : {
  "homepage": "index.html"
} 
...

index.html可以在每个新标签页上正常加载。
但是,无论是新窗口还是启动时,我得到的都是空白页面。

我手动尝试仅将首选项设置为index.html的URL作为扩展本身,例如:

moz-extension://1232131-32132131-321312-321321-321321/index.html

该行为有所改善,但并不完美。当我这样做时,新的Windows可以很好地加载index.html,但是在重新启动时(从关闭的应用程序开始),我看到的还是再次是空白页?

任何想法出了什么问题?仅在Firefox中会发生这种情况,在Tor浏览器和Google Chrome上则可以。

1 个答案:

答案 0 :(得分:1)

事实证明,发生这种情况是由于扩展在启动时未及时加载新窗口而加载的。

我第一次解决此问题的方式是在我的background.js文件中:

function loadStart(){
    browser.tabs.update(
        {
            url: "index.html"
        }
    )
}

browser.runtime.onStartup.addListener(loadStart)

但是,如果始终使用私人浏览的设置处于活动状态,则上面的代码将不会执行任何操作,因为如果加载了隐身/私人浏览配置文件,则runtime.onStartup不会触发。

对此进行反驳:

function pushStart(data) {
    if (data == null) {
        loadStart()
    }
    else {
        console.log("tab is well defined")
    }
}

var currentTab = browser.tabs.getCurrent()

currentTab.then((data)=>(pushStart(data)))

关于重新启动的新窗口正在尝试加载扩展中捆绑的页面,但由于扩展本身尚未加载且不可用而跳出。
因此,以上代码可解决这种情况。