这篇文章需要技术复核。如何帮忙。
这篇翻译不完整。请帮忙从英语翻译这篇文章。
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
- More about Working with windows in chrome code.