【问题标题】:Firefox add-on sdk : how to use simple-storage API in a content script?Firefox 插件 sdk:如何在内容脚本中使用简单存储 API?
【发布时间】:2013-06-11 15:11:11
【问题描述】:

我正在使用 Erik Vold 的 toolbar button 添加 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

【问题讨论】:

    标签: javascript firefox firefox-addon storage firefox-addon-sdk


    【解决方案1】:

    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 需要保存时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多