Javascript Firefox扩展:打开动态扩展本地页面

Javascript Firefox扩展:打开动态扩展本地页面,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,在我的扩展(使用附加SDK)中,我想在选项卡中打开一个扩展本地网页(比如,data/templates/page.html)。页面应该能够调用SDK方法。也就是说,我想处理一些保存在本地存储器中的数据,然后显示它们 换句话说,我需要一个行为类似于面板的选项卡 我是否可以使用选项卡模块并将内容脚本附加到页面上(尽管脚本会很长) 按下导航工具栏中的按钮时,将打开该选项卡: btn.addEventListener("click", function(e) { //open

在我的扩展(使用附加SDK)中,我想在选项卡中打开一个扩展本地网页(比如,
data/templates/page.html
)。页面应该能够调用SDK方法。也就是说,我想处理一些保存在本地存储器中的数据,然后显示它们

换句话说,我需要一个行为类似于面板的选项卡

我是否可以使用
选项卡
模块并
内容脚本
附加到页面上(尽管脚本会很长)

按下导航工具栏中的按钮时,将打开该选项卡:

btn.addEventListener("click", 
    function(e) {
        //open tab here
    });

如何打开这样的页面?

这并不难,很多扩展都在这样做:

const tabs = require('sdk/tabs');
const { data} = require('sdk/self');

tabs.open({
  url: data.url('yourpage.html'),
  onReady: function onReady(tab) {
    tab.attach({
      contentScriptFile: data.url('yourcontentscript.js')
    });
  }
});

您可以在on MDN中找到所需的所有信息。

PS:应该没那么难吧?。firefox扩展开发的状态非常混乱。谢谢,它成功了。不过有一个问题,上面可疑的
const{data}
。那到底是什么?。甚至dreamweaver也将其标记为语法错误。这些是特定于Mozilla的JavaScript添加,它们最终将成为标准。const在这里描述:destructuring assignment语法在这里讨论:好的,上面的东西从结果对象中提取
数据
值。@MadeOfAir,正如@canuckistani所说:destructuring assignment在以模块为中心的环境中非常有用,因为您可以列出所有要使用的函数和对象。例如:
const{encode,decode}=require('sdk/base64')
。当然,您仍然可以使用
var base64=require('sdk/base64')
,然后将函数作为方法调用或将它们分配给其他变量,这取决于您。很抱歉,我不能使用
contentScriptFile
中的任何sdk API。例如,
require
PlacesUtils
组件
都给了我参考错误。不过,这一页的开头还不错。这就是我接受答案的原因。