【问题标题】:Opening a background window using the Firefox Add-ons SDK使用 Firefox 附加组件 SDK 打开后台窗口
【发布时间】:2014-11-29 15:41:58
【问题描述】:

我正在编写一个 Firefox 插件,并且我正在使用高级 Firefox 插件 SDK API。

我的插件会打开一个新窗口,并在该窗口中打开几个选项卡。

如何让这个新窗口在后台打开?我不希望它的打开破坏用户对活动窗口的关注。

打开选项卡时,有一个 inBackground 选项可用于此操作。

我搜索了 Windows 模块文档的高低,但在创建新窗口时找不到类似的选项!

如何在后台打开这个新窗口?

如果 Mozilla 禁止我这样做,有没有一种方法可以在新窗口打开后快速将其推到后台,从而将破坏性降到最低?

【问题讨论】:

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


    【解决方案1】:

    不允许。完全没问题。我认为可以使用 alwaysLowered 的功能选项。

    在此处找到的完整功能列表:https://developer.mozilla.org/en-US/docs/Web/API/window.open#Position_and_size_features

    var sa = Cc["@mozilla.org/supports-array;1"].createInstance(Ci.nsISupportsArray);
    var wuri = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
    wuri.data = 'about:blank';
    sa.AppendElement(wuri);
    let features = "chrome,dialog=no,alwaysLowered";
    var wantTabs = false;
    if (wantTabs) {
      features += ',all';
    }
    /*var sDOMWin = aTab.ownerGlobal; //source DOMWindow*/
    if (PrivateBrowsingUtils.permanentPrivateBrowsing/* || PrivateBrowsingUtils.isWindowPrivate(sDOMWin)*/) {
       features += ",private";
    } else {
       features += ",non-private";
    }
    var XULWindow = Services.ww.openWindow(null, 'chrome://browser/content/browser.xul', null, features, sa);
    

    您可以将此代码标记到末尾以在 XULWindow 加载后执行某些操作:

    XULWindow.addEventListener('load', function() {
      //can lower or raise the window z-index here
      var DOMWindow = XULWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow);
      DOMWindow.gBrowser.selectedTab.linkedBrowser.webNavigation.stop(Ci.nsIWebNavigation.STOP_ALL);
    }, false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2015-07-23
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多