Diese Seite zeigt einige interessante Codebeispiele.
Neue Browser-Fenster öffnen
Um ein neues Browser-Fenster zu öffnen, wird einfach window.open()
benutzt. Jedoch gibt window.open()
ein Window
Objekt für den Inhalt zurück, nicht für das Browser-Fenster selbst, deshalb sollte man sich das Chrome Window
zuerst holen. Der einfachste Weg das zu machen, ist nsIWindowMediator
zu benutzen.
Beispiel
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.getBrowser(); // why did we do this? we never do anything with |b|
Ziehbare Fenster
Um ein Fenster durch das Klicken auf die Fensterinhalte ziehbar zu machen, können die mousedown
und mousemove
Ereignisse verwendet werden. Der folgende Code berücksichtigt nicht, welches Element angeklickt wurde, sondern reagiert auf alle mousedown
Ereignisse gleich. Dieser Code kann verbessert werden, indem das Zielelements des Ereignisses überprüft wird und startPos
nur festgelegt wird, wenn das Element den Kriterien entspricht.
Beispiel
var startPos=0; var mouseDown = function(event) { startPos = [ event.clientX, event.clientY]; } var mouseMove = function(event) { if (startPos != 0) { var newX = event.screenX-startPos[0]; var newY = event.screenY-startPos[1]; window.moveTo(newX,newY); } } var mouseUp = function(event) { startPos=0; } window.addEventListener("mousedown",mouseDown, false); window.addEventListener("mouseup",mouseUp, false); window.addEventListener("mousemove",mouseMove, false);
XUL Titelleistenelement
XUL Anwendungen können Vorteile aus dem Titlebar Element ziehen, um ein ähnliche Ergebnisse ohne extra JavaScript Code zu erzielen.
Wiederbenutzung und Fokussierung von benannten Fenstern
Dieser Abschnitt ist inkorrekt und muss neu geschrieben werden. Siehe nsIWindowMediator für eine korrekte Dokumentation.
Während eine Festlegung des name
Parameters bei window.open oder window.openDialog verhindert, dass mehrere Fenster geöffnet werden, wird jeder Aufruf das Fenster Wiederinitialisieren und daher geht alles, was der Benutzer in diesem Fenster gerade getan hat, verloren. Zusätzlich wird es nicht im Vordergrund angezeigt, wenn das Fenster im Hintergrund ist. Dieser Code prüft, ob ein Fenster mit dem gegebenen Namen existiert. Wird eines gefunden, wird es fokussiert. Wenn nicht, wird ein Neues geöffnet.
var windowName = "yourWindowName"; var windowsMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator); var win = windowsMediator.getMostRecentWindow(windowName); if (win) win.focus(); else window.open("chrome://to/your/window.xul", windowName, "features");