单击按钮更改窗口位置

时间:2014-01-09 02:12:41

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

我已经阅读了firefox附加SDK的选项卡示例文档。我可能错了,但是标签API不适用于新标签吗?

似乎没有一种简单的方法可以点击面板上的按钮,只需更改当前(主)窗口的网址。

我认为我需要一个内容脚本才能完成此任务?

// panel.html
<!DOCTYPE>
<html>
<head>
    <script>
      function goToHome() {
          window.location.replace(http://domain.com/home)
      }
    </script>
</head>
  <body>
    <form id="frm1" action="" method="post">
      <div><input type="button" onClick="goToHome()" name="Submit" value="home"></div>
    </form> 
  </body>
</html>

1 个答案:

答案 0 :(得分:1)

标签API适用于所有打开的标签页。您可以按索引引用各个标签 - var tab = tabs[x] - 或使用var tab = tabs.activeTab引用当前标签。然后,您可以使用tab.url = someUrl设置url。将此代码放在widgetonclick属性中,您就可以了。所有代码都在main.js中,不需要内容脚本。

如果通过“在面板上”表示面板中,那么是的,您需要面板的内容脚本,而不是代码显示的页面脚本。见scripting panel content。例如:

main.js

var tabs = require("sdk/tabs");
var data = require("sdk/self").data;
var panel = require("sdk/panel").Panel({
    contentURL: data.url("panel.html"),
    contentScript: "function goToHome() {self.port.emit('goToHome', homeUrl);}"
    //OR
    contentScriptFile: data.url("panel.js")
});
panel.port.on("goToHome", function(homeUrl) {
    tabs.activeTab.url = homeUrl;
}

如果您使用contentScriptFile,请在数据文件夹中加入panel.js。这将被注入panel.html

panel.js

var homeUrl = "http://www.google.com/";
function goToHome() {
    self.port.emit('goToHome', homeUrl);
}