Firefox 附加扩展:主页覆盖意外行为
Firefox Add-on Extension: Homepage override unexpected behavior
这是我的一部分 manifest.json
:
...
"chrome_url_overrides" : {
"newtab": "index.html"
},
"chrome_settings_overrides" : {
"homepage": "index.html"
}
...
index.html
在每个新标签页上都能正常加载。
但是新的 windows,在启动时,我得到的只是一个空白页。
我尝试手动将首选项中的主页设置为 URL,将 index.html
作为扩展本身,例如:
moz-extension://1232131-32132131-321312-321321-321321/index.html
行为有所改善,但并不完美。当我这样做时,新的 windows 加载 index.html
正常,但在重新启动时(从关闭的应用程序)我看到的又是一个空白页面?
知道出了什么问题吗?这只发生在 Firefox 中,在 Tor 浏览器和 Google Chrome.
上正常
事实证明,这是由于在启动期间加载新的 window 时扩展程序未及时加载而发生的。
我第一次解决这个问题的方式是在我的 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)))
新 window 重新启动时正在尝试加载捆绑在扩展程序中的页面,但由于扩展程序本身尚未加载且不可用而失败。
因此,上面的代码适用于这种情况。
这是我的一部分 manifest.json
:
...
"chrome_url_overrides" : {
"newtab": "index.html"
},
"chrome_settings_overrides" : {
"homepage": "index.html"
}
...
index.html
在每个新标签页上都能正常加载。
但是新的 windows,在启动时,我得到的只是一个空白页。
我尝试手动将首选项中的主页设置为 URL,将 index.html
作为扩展本身,例如:
moz-extension://1232131-32132131-321312-321321-321321/index.html
行为有所改善,但并不完美。当我这样做时,新的 windows 加载 index.html
正常,但在重新启动时(从关闭的应用程序)我看到的又是一个空白页面?
知道出了什么问题吗?这只发生在 Firefox 中,在 Tor 浏览器和 Google Chrome.
上正常事实证明,这是由于在启动期间加载新的 window 时扩展程序未及时加载而发生的。
我第一次解决这个问题的方式是在我的 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)))
新 window 重新启动时正在尝试加载捆绑在扩展程序中的页面,但由于扩展程序本身尚未加载且不可用而失败。
因此,上面的代码适用于这种情况。