在附加sdk中刷新contenturl

时间:2014-12-07 21:08:47

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

当我点击小部件图标时,如何使用contenturl刷新Panel?我的代码很简单:

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

exports.main = function() {
    var panel = require("sdk/panel").Panel({
        width: 400,
        height: 560, 
        contentURL: "http://sample.com/index.html",      
    });

    panel.on("show", function() {
      panel.port.emit("show");
    });

    require("sdk/widget").Widget({
        id: "Sample",
        label: "Sample",
        contentURL: data.url("icon128.png"),
        panel:panel
    });
};

1 个答案:

答案 0 :(得分:1)

在小部件点击上更改面板的contentURL,如下所示:

require("sdk/widget").Widget({
    id: "Sample",
    label: "Sample",
    contentURL: data.url("icon128.png"),
    panel:panel,
    onClick: function() {
      panel.contentURL = contentURL;
    }
});

请记住以下

Widget docs

  

从Firefox 29开始,不推荐使用小部件API。请参阅ui模块进行更换。特别是,对于一个简单的按钮,请尝试使用action buttontoggle button API。

Panel docs

  

您可以通过将按钮本身作为位置选项传递到面板的show()方法或其构造函数来将面板附加到切换按钮:

var { ToggleButton } = require('sdk/ui/button/toggle');
var panels = require("sdk/panel");
var self = require("sdk/self");

var button = ToggleButton({
  id: "my-button",
  label: "my button",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
  onChange: handleChange
});

var panel = panels.Panel({
  contentURL: self.data.url("panel.html"),
  onHide: handleHide
});

function handleChange(state) {
  if (state.checked) {
    panel.show({
      position: button
    });
  }
}

function handleHide() {
  button.state('window', {checked: false});
}