Windows

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");

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter:
Mitwirkende an dieser Seite: Lukas Skywalker, fscholz, Ben73
Zuletzt aktualisiert von: fscholz,