Javascript 为什么启用面板代码时addone按钮丢失?

Javascript 为什么启用面板代码时addone按钮丢失?,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,一旦启用了require(“sdk/panel”).panelcode,我就找不到addone按钮,甚至在自定义页面中也找不到,怎么了 var buttons = require('sdk/ui/button/action'); var tabs = require("sdk/tabs"); var data = require("sdk/panel").data; // var okentry=require("sdk/panel").Panel({ // contentURL: dat

一旦启用了
require(“sdk/panel”).panel
code,我就找不到addone按钮,甚至在自定义页面中也找不到,怎么了

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

// var okentry=require("sdk/panel").Panel({
//   contentURL: data.url("okentry.html"),
//   contentScriptFile: data.url("okentry.js")
// });

var button = buttons.ActionButton({
  id: "test-panel",
  label: "ok",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
  onClick: handleClick
});

function handleClick(state) {
  tabs.open("https://www.baidu.com/");
  // okentry.show();
  alert('hi');
  console.info(tabs.length);
}


原因是这一行:

var data = require("sdk/panel").data;
但你应该写:

data = require("sdk/self").data;

由于require(“sdk/panel”)没有“数据”,变量变得未定义。稍后,当您调用data.url(“okentry.html”)时,浏览器会抛出异常和面板构造函数,并且下面的所有代码都不会执行。

您似乎在遵循中的示例。假设您正在使用该示例中提供的图标,您的屏幕截图将清晰地显示新按钮(Firefox徽标)。也许我不明白你说“addone”是什么意思。您提供的代码中不存在文本“addone”,因此不清楚您实际试图引用的内容。您的代码创建的唯一按钮是ID为=“test panel”的按钮。是的,我正在遵循该示例,我的意思是当我使用诸如require(“sdk/panel”)之类的代码时。panel,我无法再次看到该按钮,为什么?您能对您的答案添加更多解释吗?这会更有帮助。它看起来像是简单的打字错误,但我添加了解释。