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