Wie können wir ein Popup-Fenster, das über die Javascript- window.open
Funktion geöffnet wurde, in der Mitte der Bildschirmvariablen auf die aktuell ausgewählte Bildschirmauflösung zentrieren?
quelle
Wie können wir ein Popup-Fenster, das über die Javascript- window.open
Funktion geöffnet wurde, in der Mitte der Bildschirmvariablen auf die aktuell ausgewählte Bildschirmauflösung zentrieren?
SINGLE / DUAL MONITOR FUNCTION ( Dank an http://www.xtf.dk - danke!)
UPDATE: Es funktioniert jetzt auch bei Fenstern, die dank @Frost nicht auf die Breite und Höhe des Bildschirms maximiert sind!
Wenn Sie sich auf einem Doppelmonitor befinden, wird das Fenster horizontal, aber nicht vertikal zentriert. Verwenden Sie diese Funktion, um dies zu berücksichtigen.
const popupCenter = ({url, title, w, h}) => {
// Fixes dual-screen position Most browsers Firefox
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
const systemZoom = width / window.screen.availWidth;
const left = (width - w) / 2 / systemZoom + dualScreenLeft
const top = (height - h) / 2 / systemZoom + dualScreenTop
const newWindow = window.open(url, title,
`
scrollbars=yes,
width=${w / systemZoom},
height=${h / systemZoom},
top=${top},
left=${left}
`
)
if (window.focus) newWindow.focus();
}
Anwendungsbeispiel:
popupCenter({url: 'http://www.xtf.dk', title: 'xtf', w: 900, h: 500});
CREDIT GEHT ZU: http://www.xtf.dk/2011/08/center-new-popup-window-even-on.html (Ich wollte nur auf diese Seite verlinken, aber nur für den Fall, dass diese Website ausfällt Code ist hier auf SO, Prost!)
versuchen Sie es so:
quelle
Aufgrund der Komplexität bei der Bestimmung der Mitte des aktuellen Bildschirms in einem Setup mit mehreren Monitoren ist es einfacher, das Popup über dem übergeordneten Fenster zu zentrieren. Übergeben Sie einfach das übergeordnete Fenster als weiteren Parameter:
Implementierung:
quelle
Quelle: http://www.nigraphic.com/blog/java-script/how-open-new-window-popup-center-screen
quelle
Wenn Sie es auf dem Rahmen zentrieren möchten, in dem Sie sich gerade befinden, würde ich diese Funktion empfehlen:
Ähnlich wie die Antwort von Crazy Tim, verwendet jedoch nicht window.top. Auf diese Weise funktioniert es auch dann, wenn das Fenster in einen Iframe einer anderen Domäne eingebettet ist.
quelle
Es funktioniert sehr gut in Firefox.
Ändern Sie einfach die oberste Variable in einen anderen Namen und versuchen Sie es erneut
quelle
Number(...)
.Meine Empfehlung ist, 33% oder 25% des verbleibenden Speicherplatzes zu verwenden
und nicht 50% als andere hier veröffentlichte Beispiele,
hauptsächlich wegen der Fensterkopfzeile ,
die für den Benutzer besser und komfortabler aussieht.
vollständiger Code:
Schauen Sie sich diese Zeile an:
var top = (screen.height - h) / 4; // für 25% - durch 4 | teilen für 33% - um 3 teilen
quelle
Facebook verwendet den folgenden Algorithmus, um das Anmelde-Popup-Fenster zu positionieren:
quelle
Sie können dazu CSS verwenden. Geben Sie dem Element, das in der Mitte des Popups platziert werden soll, einfach die folgenden Eigenschaften
quelle
Hier ist eine alternative Version der oben genannten Lösung ...
quelle
Meine Version mit ES6 JavaScript.
Funktioniert gut auf Chrome und Chromium mit Dual-Screen-Setup.
Beispiel
quelle
(Dies wurde im Jahr 2020 veröffentlicht)
Eine Erweiterung der Antwort von CrazyTim
Sie können die Breite für eine dynamische Größe auch auf einen Prozentsatz (oder ein Verhältnis) festlegen. Die absolute Größe wird weiterhin akzeptiert.
Verwendung:
quelle
Hinweis: Sie müssen verwenden
Math.round
, um die genaue Ganzzahl von Breite und Höhe zu erhalten.quelle
Basierend auf Facebook, verwendet jedoch eine Medienabfrage anstelle des regulären Ausdrucks des Benutzeragenten, um zu berechnen, ob genügend Platz (mit etwas Platz) für das Popup vorhanden ist. Andernfalls wird der Vollbildmodus angezeigt. Tbh-Popups auf Mobilgeräten werden ohnehin als neue Registerkarten geöffnet.
quelle
Diese Hybridlösung funktionierte für mich sowohl bei der Einrichtung mit einem als auch mit zwei Bildschirmen
quelle
Ich hatte ein Problem mit der Zentrierung eines Popup-Fensters im externen Monitor, und window.screenX und window.screenY waren negative Werte (-1920, -1200). Ich habe alle oben genannten Lösungsvorschläge ausprobiert und sie haben auf primären Monitoren gut funktioniert. Ich wollte gehen
Folgendes hat bei mir funktioniert:
quelle
quelle