【问题标题】:Firefox Add-on Extension: Homepage override unexpected behaviorFirefox 附加扩展:主页覆盖意外行为
【发布时间】:2018-09-26 16:16:20
【问题描述】:

这是我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

行为有所改善,但并不完美。当我这样做时,新窗口加载index.html 很好,但是在重新启动(从关闭的应用程序)时,我看到的又是一个空白页?

有什么想法吗?这仅在 Firefox 中发生,在 Tor 浏览器和 Google Chrome 上正常。

【问题讨论】:

  • 仅供参考,每个设备上的扩展 URL 都是唯一的。所以我希望您的意思是您只是通过手动设置主页 URL 进行测试。
  • 你试过 ./index.html 吗?
  • @Smile4ever 是的,我认为这不是问题

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


【解决方案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)))

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
相关资源
最近更新 更多