【问题标题】:How to open a popup window via Firefox Addon contextual menu?如何通过 Firefox Addon 上下文菜单打开弹出窗口?
【发布时间】:2013-01-28 22:28:37
【问题描述】:

我正在为 Firefox 开发一个扩展,它需要打开一个可以自定义大小的标准 Javascript 弹出窗口。我环顾四周,似乎无法弄清楚该怎么做。我的上下文菜单代码运行良好,但似乎 Firefox 阻止了完成此操作所需的 window.open sn-p。

有没有办法通过 XUL 或任何其他 SDK 模块来实现?

【问题讨论】:

  • 请添加更多细节,或者理想情况下您的代码不起作用。另外,您使用的是附加 SDK 吗?您是在尝试打开使用 SDK 的面板模块创建的“面板”还是其他?

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


【解决方案1】:

我们需要更多细节,这就是我认为你想要的。

require("sdk/context-menu").Item({
  label: "Open Window",
  contentScript: 'self.on("click", function (node, data) {' +
                 '  window.open("http://stackoverflow.com/questions/14572412/how-to-open-a-popup-window-via-firefox-addon-contextual-menu");' +
                 '});'
});

当用户单击“打开窗口”项时,此代码将打开一个新窗口(或选项卡)。 window.open 函数在这种情况下工作,但我不确定你没有看到它在什么情况下工作。

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    如果你想打开的不是弹出窗口而是面板,这里有一个例子:

    var self = require("sdk/self");
    var panels = require("sdk/panel");
    
    var panel = panels.Panel({
        contentURL: self.data.url("panel.html")
        // , onHide: handleHide
    });
    
    
    require("sdk/context-menu").Item({
      label: "Open Window",
      contentScript: 'self.on("click", function (node, data) {' +
                     '  self.postMessage(node.innerHTML);' +
                     '});',
      onMessage: function (data) {
        console.log('posted retrieved: '+data);
        panel.show();
      }
    });
    

    还有一些reference

    【讨论】:

      【解决方案3】:

      你也可以使用:

      `<popupset>
        <panel id="some">
        </panel>
      <popupset>`
      

      在 JavaScript 中写:

      document.getElementById('some').openPopup(...)

      【讨论】:

        猜你喜欢
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多