Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Windows

这篇文章需要技术复核。如何帮忙。

这篇翻译不完整。请帮忙从英语翻译这篇文章

This article offers code snippets demonstrating common tasks you may wish to perform.

Opening new browser windows

打开一个新的浏览器窗口,你可以简单地使用open()窗口。然而,window.open()返回内容的窗口对象,不是浏览器窗口本身,所以你应该先获得Chrome窗口。最简单的办法就是使用{ {接口(“nsiwindowmediator”)} }。

Example

window.open();
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                   .getService(Components.interfaces.nsIWindowMediator);
var newWindow = wm.getMostRecentWindow("navigator:browser");
var b = newWindow.gBrowser; 

Draggable windows

通过点击窗口的内容做一个可拖动窗口,你可以使用鼠标和鼠标移动事件。下面的代码不关心哪个元素被点击,简单地回应所有MouseDown事件一样。你可以通过检查event.target元只设置StartPos如果元素匹配标准提高代码。

Example

 

var startPos = null;
function mouseDown(event) {
  startPos = [event.clientX, event.clientY];
}
function mouseMove(event) {
  if (startPos) {
    var newX = event.screenX - startPos[0];
    var newY = event.screenY - startPos[1];
    window.moveTo(newX, newY);
  }
}
function mouseUp(event) {
  startPos = null; 
}

window.addEventListener("mousedown", mouseDown, false);
window.addEventListener("mouseup", mouseUp, false);
window.addEventListener("mousemove", mouseMove, false);

XUL Titlebar Element

XUL应用程序可以利用的 titlebar 元素实现类似的结果没有额外的JavaScript代码。

Re-using and focusing named windows

当指定window.open或window.opendialog名称参数将阻止这名字多个窗口打开,每个电话会重新初始化窗口,从而失去任何状态的用户已经把它放在。此外,如果窗口是背景,它可能不会被带到前面。此代码将检查提供名称的窗口。如果它找到了,它就集中了它。如果它不,它打开一个。

var wenum = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                      .getService(Components.interfaces.nsIWindowWatcher)
                      .getWindowEnumerator();
var index = 1;
var windowName = "yourWindowName";
while (wenum.hasMoreElements()) {
  var win = wenum.getNext();
  if (win.name == windowName) {
    win.focus();
    return;
  }
  index++
}
window.open("chrome://to/your/window.xul", windowName, "features");

Uniquely identifying DOM windows

(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

在Gecko,每个DOM窗口有一个唯一的64-bit ID number。你可以使用DOM窗口的ID                        nsIDOMWIndowUtils属性outerWindowID。每次一个新的窗口被创建时,它被分配一个标识比上次创建的窗口大。这可以用在这种情况下,你需要唯一标识一个DOM窗口应用程序的生命周期期间:

var util = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowUtils);
var windowID = util.outerWindowID;

运行代码后,windowID包含外窗的唯一的ID。

同样,你可以使用当前窗口内部ID nsIDOMWIndowUtils 属性currentInnerWindowID:

var util = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowUtils);
var windowID = util.currentInnerWindowID;

Programatically modifying HTML

试图修改HTML元素时,它是指定命名空间的重要。例如,下面的代码将添加一个水平规则。

var hr = document.createElementNS("https://www.w3.org/1999/xhtml", "html:hr");
document.getElementById("id1").appendChild(hr);

See also

文档标签和贡献者

 此页面的贡献者: zhu91aizhu
 最后编辑者: zhu91aizhu,