具体来说,如果我在 background.js
中创建一个变量,然后关闭 Firefox(所有选项卡都必须重新加载,但仍然保存),该变量仍然会存在吗?还存在于我离开时的状态吗?
在我的具体情况下,我想在选项卡更新时存储一些有关选项卡的数据。每当我查询选项卡时,我都不能依赖那里的数据,因此我必须在它们更新后立即获取它。如果我有一个全局对象,它会保留有关在 FF Android 关闭并重新打开之前更新的选项卡的信息,还是会重新设置为空,并在更新新选项卡时再次开始填充。简化:
var count = 0;
browser.tabs.onUpdate.adListener(function()
{
count = count + 1;
});
//----------------------
// user updates a 3 tabs
//----------------------
console.log(count); // this prints 3
//===========================
// FF android is killed here!
//===========================
// FF android is re-opened
//===========================
//-------------------------
// user updates 3 more tabs
//-------------------------
console.log(count); // does this print 3 or 6?
最佳答案
WebExtension 的后台脚本只是另一个(不可见)选项卡。
如果您重新启动 Firefox 并重新加载所有选项卡,则会重新加载该不可见选项卡;那里不应该对持久性进行特殊处理 - 您的代码本质上是从空白状态再次运行。
如果您自己确实需要持久性,则需要使用类似browser.storage
API的东西.
关于javascript - 火狐安卓 : how long does a webextensions background script last?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44125132/