0

具体来说,如果我在我的 . 中创建一个变量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?
4

1 回答 1

1

WebExtension 的后台脚本只是另一个(不可见的)选项卡。

如果您重新启动 Firefox 以重新加载所有选项卡,则重新加载该不可见选项卡;那里不应该对持久性进行特殊处理 - 您的代码基本上是从空白状态再次运行。

如果您自己确实需要持久性,则需要使用browser.storageAPI之类的东西。

于 2017-05-23T09:50:11.480 回答