Javascript 根据面板上呈现的当前页面上的操作更改面板的contentURL

Javascript 根据面板上呈现的当前页面上的操作更改面板的contentURL,javascript,firefox-addon-sdk,Javascript,Firefox Addon Sdk,我正在使用Erik Vold的工具栏按钮。我有一个面板固定在它上面。当在面板中呈现的html静态页面上单击其中一个链接时,我需要在同一面板中显示其他内容 我试图使用端口API在插件代码和html静态页面之间传递消息。在侦听某个事件时,我想更改面板的contentURL字段: var myScript = "window.addEventListener('click', function(event) {" + " var t = event.target;" +

我正在使用Erik Vold的工具栏按钮。我有一个面板固定在它上面。当在面板中呈现的html静态页面上单击其中一个链接时,我需要在同一面板中显示其他内容

我试图使用端口API在插件代码和html静态页面之间传递消息。在侦听某个事件时,我想更改面板的contentURL字段:

var myScript = "window.addEventListener('click', function(event) {" +
           "  var t = event.target;" +
           "  if (t.nodeName == 'A')" +
           "    self.port.emit('click-link', t.id);" +
           "}, false);"

var mainPanel = require("panel").Panel({
  width: 200,
  height: 200,
  contentURL: require("self").data.url("appList.html"),
  contentScript: myScript
});

mainPanel.port.on("click-link", function(appName) {
  if(appName=='app1'){
  //mainPanel.resize(700,500);  --works
    mainPanel.contentURL="http://www.some-server/app1.html";  --fails
  }
  if(appName=='app2')
    ...
});

mainPanel.resize可以很好地调整面板的大小。是否有类似的方法更改面板的contentURL?

如果代码正常,您在面板模块中发现了一个错误。耶


我为您提交了一份文件,其中包含一个可能需要一点时间才能完成的修复程序,但修复程序应该即将到来。

如果您使用href属性,您将在正确的页面上重定向。查看SDK代码,更改panel.contentURL应该可以正常工作。如果没有,那么您可能发现了SDK错误。@WladimirPalant文档中提到的示例是从两个不同的小部件中发现的。我不是从小部件或工具栏按钮设置contentURL属性directlynot。这会有问题吗?修复程序成功了!您应该能够在那里获得sdk的最新版本。