Als gute Praxis halte ich es für eine gute Idee, zu testen, ob ein Popup blockiert wurde, und gegebenenfalls Maßnahmen zu ergreifen. Sie müssen wissen, dass window.open einen Rückgabewert hat. Dieser Wert kann null sein, wenn die Aktion fehlgeschlagen ist. Zum Beispiel im folgenden Code:
function pop(url,w,h) {
n=window.open(url,'_blank','toolbar=0,location=0,directories=0,status=1,menubar=0,titlebar=0,scrollbars=1,resizable=1,width='+w+',height='+h);
if(n==null) {
return true;
}
return false;
}
Wenn das Popup blockiert ist, gibt window.open null zurück. Die Funktion gibt also false zurück.
Stellen Sie sich als Beispiel vor, Sie rufen diese Funktion direkt von einem beliebigen Link mit auf target="_blank"
: Wenn das Popup erfolgreich geöffnet wurde, false
blockiert die Rückgabe
die Verknüpfungsaktion. Wenn das Popup blockiert ist, true
lässt die Rückgabe das Standardverhalten (neues _leeres Fenster öffnen) und fährt fort .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
Auf diese Weise erhalten Sie ein Popup, wenn es funktioniert, und ein _blank-Fenster, wenn nicht.
Wenn das Popup nicht geöffnet wird, können Sie:
- Öffnen Sie ein leeres Fenster wie im Beispiel und fahren Sie fort
- öffne ein gefälschtes Popup (ein Iframe innerhalb der Seite)
- Informieren Sie den Benutzer ("Bitte erlauben Sie Popups für diese Site")
- Öffnen Sie ein leeres Fenster und informieren Sie den Benutzer usw.