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("http://www.w3.org/1999/xhtml", "html:hr");
document.getElementById("id1").appendChild(hr);

See also

文档标签和贡献者

 最后编辑者: zhu91aizhu,