Come buona pratica, penso che sia una buona idea verificare se un popup è stato bloccato e agire nel caso. Devi sapere che window.open ha un valore di ritorno e che il valore potrebbe essere nullo se l'azione non è riuscita. Ad esempio, nel seguente codice:
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;
}
se il popup è bloccato, window.open restituirà null. Quindi la funzione restituirà false.
Ad esempio, immagina di chiamare questa funzione direttamente da qualsiasi collegamento con target="_blank"
: se il popup viene aperto correttamente, il ritorno
false
bloccherà l'azione del collegamento, altrimenti se il popup è bloccato, il ritorno true
consente il comportamento predefinito (apri la nuova finestra _blank) e continua .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
In questo modo avrai un popup se funziona e una finestra _blank in caso contrario.
Se il popup non si apre, è possibile:
- apri una finestra vuota come nell'esempio e continua
- apri un popup falso (un iframe all'interno della pagina)
- informare l'utente ("si prega di consentire i popup per questo sito")
- aprire una finestra vuota e quindi informare l'utente ecc.