在«面板»上显示当前页面的URL和标题

时间:2014-06-13 20:41:32

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

如何在«panel»标题和网址当前页面上显示?

我的问题是对port.emit,port.on。

的误解

enter image description here

UPD:

没有“标题”面板,“标题”当前页面。

main.js

var pa            = require("sdk/panel");
var se            = require("sdk/self");
// ...
var panel = pa.Panel({
    width: 400,
    height: 350,
    contentURL: [
        se.data.url("./popup.html")],
    contentScriptFile: [
        se.data.url("popup.js"),
        se.data.url("./js/jquery-2.1.0.min.js"),
        se.data.url("./js/bootstrap.min.js")],
    contentStyleFile: [
        se.data.url("./css/bootstrap.min.css"),
        se.data.url("./css/font-awesome.min.css")],
    onHide: handleHide
});
// ...

popup.js

var url_page, title_page; // No document.title or document.location

console.log(url_page);
console.log(title_page);

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在main.js中:

var pa            = require("sdk/panel");
var se            = require("sdk/self");
var tabs = require('sdk/tabs');
var panel = pa.Panel({
    width: 400,
    height: 350,
    contentURL: [
        se.data.url("./popup.html")],
    contentScriptFile: [
        se.data.url("popup.js"),
        se.data.url("./js/jquery-2.1.0.min.js"),
        se.data.url("./js/bootstrap.min.js")],
    contentStyleFile: [
        se.data.url("./css/bootstrap.min.css"),
        se.data.url("./css/font-awesome.min.css")],
    onHide: handleHide,
    onShow: function() {
      this.port.emit('show', {
        url: tabs.activeTab.url,
        title: tabs.activeTab.title
      })
    }
});

在popup.js中添加:

self.port.on('show', ({ url, title }) => {
  console.log(url);
})

答案 1 :(得分:0)

你可以这样:

const { getMostRecentBrowserWindow } = require('sdk/window/utils');
var aDOMWindow = getMostRecentBrowserWindow();
if (aDOMWindow.gBrowser) {
    var url = aDOMWindow.gBrowser.contentDocument.location;
    var title = aDOMWindow.gBrowser.contentDocument.title;
} else {
    var url = aDOMWindow.document.location;
    var title = aDOMWindow.document.title;
}
相关问题