2014-10-17 50 views
0

我是Firefox插件开发的新手,并且在MDN文档中找到解决我的问题的方法时遇到了一些问题。我的插件是非常简单的,现在,我已经打开新的Chrome浏览器网页 Firefox插件中的Chrome页面无法访问标签

var buttons = require('sdk/ui/button/action'); 
var tabs = require("sdk/tabs"); 

var button = buttons.ActionButton({ 
    id: "mozilla-link", 
    label: "Visit Mozilla", 
    icon: { 
    "16": "./icon-16.png", 
    "32": "./icon-32.png", 
    "64": "./icon-64.png" 
    }, 
    onClick: handleClick 
}); 
var addontab = require("sdk/addon-page"); 
var data = require("sdk/self").data; 

function handleClick(state) { 
require("sdk/tabs").open(data.url("chrome://test_addon/content/data/index.html")); 
} 

里面那个丁目页我要访问打开的标签页列表的main.js文件;然而,这是我遇到问题的地方。添加必要的JS,如在下面的错误代码将导致:

var tabs = require('sdk/tabs'); 
for (let tab of tabs) 
console.log(tab.title); 

以下是错误的,我明明调用脚本不正确,但我不知道我应该如何来实现这一点。

JavaScript error: chrome://test_addon/content/data/index.html, line 12: require is not defined 

回答

0

在的chrome://test_addon/content/data/index.html上下文中运行的代码是不是沙箱,因此它不能访问SDK的API。

+0

这很有道理;但是,我很难找到如何对沙盒进行编码。我是否应该使用此功能来对我的脚本进行沙箱https://developer.mozilla.org/en-US/docs/Components.utils.Sandbox?谢谢! – 2014-10-18 19:59:29

+0

这并不是那么简单,实际上我不知道Addon SDK可以对沙盒页面进行沙盒操作。你真的需要使用chrome注册这个页面吗? – paa 2014-10-20 12:00:11

+0

这个页面是用chrome注册的,因为我正在试图制作一个非常大且涉及到需要专用页面的界面。如果我在SDK沙盒中设置JS(例如在工具栏面板中)将必要的数据传递到我的修饰页面然后再返回,会怎么样?这甚至有可能吗?谢谢! – 2014-10-21 23:23:04

相关问题