3

我正在使用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

4

1 回答 1

1

tabs.activeTab.attach (...)返回一个worker可用于在内容脚本和插件之间发送消息的值。有了这个,您可以让内容脚本向插件发送有关将哪些数据存储在简单存储中的消息。

所以插件端看起来像:

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

内容脚本端看起来像:

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

当你必须newData保存时。

于 2013-06-13T18:14:17.227 回答