window.open
Impossibile aprire i popup in modo affidabile in una nuova scheda in tutti i browser
Browser diversi implementano il comportamento window.open
in modi diversi, in particolare per quanto riguarda le preferenze del browser dell'utente. Non puoi aspettarti che lo stesso comportamento window.open
sia vero su tutto Internet Explorer, Firefox e Chrome, a causa dei diversi modi in cui gestiscono le preferenze del browser di un utente.
Ad esempio, gli utenti di Internet Explorer (11) possono scegliere di aprire i popup in una nuova finestra o in una nuova scheda, non è possibile forzare gli utenti di Internet Explorer 11 ad aprire i popup in un certo modo window.open
, come indicato nella risposta di Quentin .
Per quanto riguarda gli utenti di Firefox (29), l'utilizzo window.open(url, '_blank')
dipende dalle preferenze della scheda del browser, sebbene sia comunque possibile forzarli ad aprire i popup in una nuova finestra specificando larghezza e altezza (vedere la sezione "Che cos'è Chrome?" Di seguito).
Dimostrazione
Vai alle impostazioni del tuo browser e configuralo per aprire i popup in una nuova finestra.
Internet Explorer (11)
Pagina di prova
Dopo aver configurato Internet Explorer (11) per aprire i popup in una nuova finestra come mostrato sopra, utilizzare la seguente pagina di prova per verificare window.open
:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
Si noti che i popup vengono aperti in una nuova finestra, non in una nuova scheda.
Puoi anche testare quei frammenti sopra in Firefox (29) con la sua preferenza di tabulazione impostata su nuove finestre e vedere gli stessi risultati.
Che dire di Chrome? Implementa window.open
diversamente da Internet Explorer (11) e Firefox (29).
Non sono sicuro al 100%, ma sembra che Chrome (versione 34.0.1847.131 m
) non sembri avere alcuna impostazione che l'utente può utilizzare per scegliere se aprire o meno i popup in una nuova finestra o in una nuova scheda (come Firefox e Internet Explorer avere). Ho controllato la documentazione di Chrome per la gestione dei popup , ma non ha menzionato nulla di questo genere di cose.
Inoltre, ancora una volta, diversi browser sembrano implementare il comportamento in modo window.open
diverso. In Chrome e Firefox, specificare una larghezza e un'altezza forzerà un popup, anche quando un utente ha impostato Firefox (29) per aprire nuove finestre in una nuova scheda (come menzionato nelle risposte a JavaScript, aprire in una nuova finestra, non in una scheda ) :
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
Tuttavia, lo stesso frammento di codice in alto aprirà sempre una nuova scheda in Internet Explorer 11 se gli utenti impostano le schede come preferenze del browser, nemmeno specificando una larghezza e un'altezza imporranno una nuova finestra popup per loro.
Quindi il comportamento di window.open
Chrome sembra essere quello di aprire i popup in una nuova scheda quando utilizzato in un onclick
evento, di aprirli in nuove finestre quando utilizzati dalla console del browser ( come notato da altre persone ) e di aprirli in nuove finestre quando specificato con una larghezza e un'altezza.
Sommario
Browser diversi implementano il comportamento in modo window.open
diverso rispetto alle preferenze del browser degli utenti. Non puoi aspettarti che lo stesso comportamento window.open
sia vero su tutto Internet Explorer, Firefox e Chrome, a causa dei diversi modi in cui gestiscono le preferenze del browser di un utente.
Letture aggiuntive