火狐扩展如何获取扩展存储值

Firefox extension how to get extension storage value

我创建了一个临时的 Firefox 附加组件,它在单击图标时打开一个新选项卡。我使用了 link:

中提供的示例

https://github.com/mdn/webextensions-examples/tree/master/open-my-page-button

这工作正常,但新选项卡打开固定 URL。因此使用 link:

中提供的代码添加了一个首选项页面

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page

现在我可以在扩展程序的首选项页面中保存一个 URL 并且保存的 URL 可以在扩展程序存储中进行验证,这是一张显示它的图片:

function openPage() {
    browser.tabs.create({
        url: "https://www.google.com"
    });
}

browser.browserAction.onClicked.addListener(openPage);

function onError(error) {
    console.log(`Error: ${error}`);
}

function onGot(item) {
    let preference_url = "https://www.google.com";
    if (item.preference_url) {
        preference_url = item.preference_url;
    }
    browser.storage.local.set({ type : preference_url });
}

let getting = browser.storage.sync.get("preference_url");
getting.then(onGot, onError);

第三行我有 url: "https://www.google.com" 但我想使用扩展存储中的值。

因为你有 onGot(item) 功能。你应该给你的 preference_url 起一个便于追踪的名字。

如您所见,当您检查 [扩展存储] 时。 preference_url 存储在名为 type.

key

所以,您应该给它取一个像 preferred_URL 或其他名称以便于跟踪的名称。

function onGot(item) {
    let preference_url = "https://www.google.com";
    if (item.preference_url) {
        preference_url = item.preference_url;
    }
    browser.storage.local.set({ "preferred_URL" : preference_url });
}

好的,在我们访问 preferred_URLvalue 之前似乎需要做一些工作。

function openPage() {
  // <...>.storage.local.get is an async function,
  // we need wrap our function below it
  browser.storage.local.get(['preferred_URL'], function(result) {
    console.log(result);
    browser.tabs.create({
      // The key in result.key means the name of the "key" holding the value.
      "url": result.preferred_URL
    })
  });
}