使用Firefox Add-ons SDK打开后台窗口

时间:2014-11-29 15:41:59

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

我正在编写Firefox插件,我使用的是高级Firefox附加SDK API。

我的插件会打开一个新窗口,并在该窗口中打开几个标签。

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

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

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

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

如果Mozilla禁止我这样做,有没有办法可以在新窗口打开后快速将新窗口推到后台,这样它的破坏程度极低?

1 个答案:

答案 0 :(得分:2)

不允许。非常好。使用我认为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);