window.open
Tidak Dapat Diandalkan Buka Popup di Tab Baru di Semua Peramban
Browser yang berbeda menerapkan perilaku window.open
dengan cara yang berbeda, terutama yang berkaitan dengan preferensi browser pengguna. Anda tidak dapat mengharapkan perilaku yang sama untuk window.open
menjadi kenyataan di semua Internet Explorer, Firefox, dan Chrome, karena berbagai cara mereka menangani preferensi browser pengguna.
Misalnya, pengguna Internet Explorer (11) dapat memilih untuk membuka munculan di jendela baru atau tab baru, Anda tidak dapat memaksa pengguna Internet Explorer 11 untuk membuka munculan dengan cara tertentu window.open
, seperti disinggung dalam jawaban Quentin .
Sedangkan untuk pengguna Firefox (29), menggunakan window.open(url, '_blank')
tergantung pada preferensi tab browser mereka, meskipun Anda masih dapat memaksa mereka untuk membuka munculan di jendela baru dengan menentukan lebar dan tinggi (lihat bagian "Bagaimana Tentang Chrome?" Di bawah).
Demonstrasi
Buka pengaturan browser Anda dan konfigurasikan untuk membuka munculan di jendela baru.
Internet Explorer (11)
Halaman Uji
Setelah mengatur Internet Explorer (11) untuk membuka munculan di jendela baru seperti yang ditunjukkan di atas, gunakan halaman pengujian berikut untuk menguji 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>
Perhatikan bahwa popup dibuka di jendela baru, bukan tab baru.
Anda juga dapat menguji cuplikan di atas di Firefox (29) dengan preferensi tabnya diatur ke jendela baru, dan melihat hasil yang sama.
Bagaimana dengan Chrome? Ini Menerapkan window.open
Berbeda dari Internet Explorer (11) dan Firefox (29).
Saya tidak 100% yakin, tetapi sepertinya Chrome (versi 34.0.1847.131 m
) tampaknya tidak memiliki pengaturan apa pun yang dapat digunakan pengguna untuk memilih apakah akan membuka popup di jendela baru atau tab baru (seperti Firefox dan Internet Explorer) memiliki). Saya memeriksa dokumentasi Chrome untuk mengelola pop-up , tetapi tidak menyebutkan apa pun tentang hal semacam itu.
Juga, sekali lagi, browser yang berbeda tampaknya menerapkan perilaku yang window.open
berbeda. Di Chrome dan Firefox, menentukan lebar dan tinggi akan memaksa popup, bahkan ketika pengguna telah mengatur Firefox (29) untuk membuka jendela baru di tab baru (seperti yang disebutkan dalam jawaban JavaScript terbuka di jendela baru, bukan tab ) :
<!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>
Namun, potongan kode yang sama di atas akan selalu membuka tab baru di Internet Explorer 11 jika pengguna menetapkan tab sebagai preferensi browser mereka, bahkan tidak menentukan lebar dan tinggi akan memaksa jendela popup baru untuk mereka.
Jadi perilaku window.open
di Chrome tampaknya membuka popup di tab baru saat digunakan dalam suatu onclick
acara, membukanya di jendela baru saat digunakan dari konsol browser ( seperti dicatat oleh orang lain ), dan membukanya di jendela baru saat ditentukan dengan lebar dan tinggi.
Ringkasan
Browser yang berbeda menerapkan perilaku window.open
berbeda sehubungan dengan preferensi browser pengguna. Anda tidak dapat mengharapkan perilaku yang sama untuk window.open
menjadi kenyataan di semua Internet Explorer, Firefox, dan Chrome, karena berbagai cara mereka menangani preferensi browser pengguna.
Bacaan Tambahan