在面板中显示新的html /网页

时间:2014-12-19 05:58:00

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

我正在使用addon-SDK方法为firefox开发一个插件。我想知道是否有任何方法在点击该contentURL中的链接后将该面板中显示的html(contentURL)更改为新网页。提前谢谢。

1 个答案:

答案 0 :(得分:1)

Vignesh这里收到点击的网址的代码:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel#Scripting_panel_content

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

var panel = require("sdk/panel").Panel({
  contentURL: "http://www.bbc.co.uk/mobile/index.html",
  contentScript: myScript
});

panel.port.on("click-link", function(url) {
  console.log(url);
});

panel.show();

那么你可以改变它而不是console.log(url)你可以让它找到你的面板并将其iframes位置更改为该url。我不知道如何用sdk方法做到这一点,也许别人可以分享。我会尝试这样做:

panel.port.on("click-link", function(url) {
  panel.contentURL = url;
});

编辑: panel.contentURL = url可能无效,所以你必须这样做:

const { getMostRecentBrowserWindow } = require('sdk/window/utils');
var aXULBrowser = getMostRecentBrowserWindow();
aXULBrowser.getElementById('ID OF YOUR PANEL, probably same as id to your widget here').getElementsByTagName('iframe').contentWindow.location = url;