Firefox插件sdk:如何在内容脚本中使用简单存储API

Firefox add-on sdk : how to use simple-storage API in a content script?

本文关键字:脚本 简单 API 存储 sdk 插件 Firefox      更新时间:2023-09-26

我正在制作一个使用Erik Vold工具栏按钮的Firefox插件,我想知道如何在内容脚本中访问简单存储API。我知道你不能直接访问API。

var data = require('self').data;
var tabs = require('tabs');
var pageMod = require('page-mod');
var ss = require('sdk/simple-storage');
    var tbb = require('toolbarbutton').ToolbarButton({
      id: 'button',
      label: 'us-button',
      image: data.url('img/on.png'),
      onCommand: function () {
        tabs.activeTab.attach ({
            contentScriptFile: [
                data.url('jquery/jquery.min.js'),
                data.url('jquery/jquery-ui.js'),
                data.url('recuperation.js'),
                data.url('dialog.js')
          ],
          contentScriptOptions: {
          imgfr: data.url('img/fr.png'),
          imgen: data.url('img/en.png'),
          imglogo: data.url('img/logo.png')
        }
       });
      }
    });

我的问题是:如何在我的内容脚本dialog.js中访问简单存储API

tabs.activeTab.attach (...)返回一个worker,您可以使用它在内容脚本和插件之间发送消息。这样,你就可以让内容脚本向插件发送消息,告诉它要在simple-storage中存储哪些数据。

所以插件这边看起来像:

let worker = tabs.activeTab.attach(...);
worker.port.on('simple-storage', function(newData) {
  ss.storage = newData;
});

和内容脚本端看起来像:

self.port.emit('simple-storage', newData)

当你有newData保存