Start · Sprachen · JavaScript · Referenz · Window.moveBy()

Window.moveBy()

Methode

Verschiebt das aktuelle Browserfenster relativ zu seiner aktuellen Position um <code>deltaX</code> Pixel waagerecht und <code>deltaY</code> Pixel senkrecht.

seit JavaScript Baseline: alle Browser (stark eingeschränkt, siehe Kategorie: webapi

Signatur

Window.prototype.moveBy(deltaX, deltaY)

Beschreibung

window.moveBy() verschiebt ein Fenster relativ zu seiner aktuellen Position auf dem Bildschirm. Positive Werte schieben das Fenster nach rechts bzw. nach unten, negative nach links bzw. nach oben. Das Gegenstück für eine absolute Positionierung ist window.moveTo().

Praktisch nutzbar ist die Methode fast nur noch für Popup-Fenster, die das eigene Skript selbst mit window.open() geöffnet hat. Moderne Browser verbieten es, das Hauptfenster oder Tabs zu verschieben, damit Webseiten die Fenster der Nutzer nicht manipulieren können.

Die Methode liefert keine Rückmeldung, ob die Verschiebung geklappt hat. Wird der Aufruf blockiert, passiert einfach nichts – es gibt keinen Fehler. Ob sich das Fenster wirklich bewegt hat, lässt sich nur prüfen, indem man window.screenX und window.screenY vorher und nachher vergleicht.

Parameter

Name Typ Default Beschreibung
$deltaX Pflicht number Anzahl der Pixel, um die das Fenster waagerecht verschoben wird. Positiv = nach rechts, negativ = nach links.
$deltaY Pflicht number Anzahl der Pixel, um die das Fenster senkrecht verschoben wird. Positiv = nach unten, negativ = nach oben.

Rückgabewert

Typ
void
Beschreibung
Gibt undefined zurück. Ob die Verschiebung erfolgreich war, wird nicht gemeldet.

Beispiele

Selbst geöffnetes Popup verschieben

// Popup öffnen (muss durch eine Nutzeraktion ausgelöst werden)
document.querySelector('#open').addEventListener('click', () => {
  const popup = window.open('about:blank', 'hilfe', 'width=400,height=300,left=100,top=100');
  if (!popup) {
    console.warn('Popup wurde blockiert');
    return;
  }
  // 50 px nach rechts und 20 px nach oben verschieben
  popup.moveBy(50, -20);
});

Prüfen, ob die Verschiebung wirklich stattgefunden hat

const tryMoveBy = (win, dx, dy) => {
  const before = { x: win.screenX, y: win.screenY };
  win.moveBy(dx, dy);
  const moved = win.screenX !== before.x || win.screenY !== before.y;
  console.log(moved ? 'Fenster verschoben' : 'Verschiebung wurde blockiert');
  return moved;
};

// Im Hauptfenster/Tab in modernen Browsern fast immer blockiert
tryMoveBy(window, 10, 10);
Verschiebung wurde blockiert

Popup schrittweise animiert verschieben

document.querySelector('#slide').addEventListener('click', () => {
  const popup = window.open('about:blank', 'slide', 'width=300,height=200,left=0,top=100');
  if (!popup) return;

  let steps = 0;
  const timer = setInterval(() => {
    popup.moveBy(10, 0); // pro Schritt 10 px nach rechts
    steps += 1;
    if (steps >= 30 || popup.closed) clearInterval(timer);
  }, 16);
});

// Wichtig · Fallstricke

  • Stark eingeschränkt: Seit Firefox 7 und in allen aktuellen Chromium- und WebKit-Browsern lassen sich nur Fenster verschieben, die per window.open() geöffnet wurden. Außerdem darf das Fenster nur einen Tab enthalten. Hauptfenster und Tabs bleiben unverändert.
  • Stilles Scheitern: Ein blockierter Aufruf wirft keinen Fehler. Das Ergebnis lässt sich nur über screenX/screenY prüfen.
  • Mobile Browser ignorieren den Aufruf meist ganz, weil es dort keine frei verschiebbaren Fenster gibt.
  • Popup-Blocker: window.open() sollte nur direkt in einer Nutzeraktion (z. B. einem click-Handler) aufgerufen werden, sonst liefert es null.
  • Der Browser kann das Fenster innerhalb der sichtbaren Bildschirmfläche halten. Das tatsächliche Ziel kann also vom gewünschten abweichen.
  • Gleicher Ursprung: Bei Popups mit fremdem Ursprung kann der Zugriff je nach Browser eingeschränkt sein. Aus Sicht der Nutzerfreundlichkeit sollte man Fenster grundsätzlich nur zurückhaltend verschieben.