Saya mencoba membuka URL di tab baru, bukan jendela sembulan.
Saya telah melihat pertanyaan terkait di mana responsnya akan terlihat seperti:
window.open(url,'_blank');
window.open(url);
Tapi tidak ada yang bekerja untuk saya, browser masih mencoba membuka jendela sembulan.
javascript
Menandai
sumber
sumber
Jawaban:
Tidak ada yang dapat dilakukan oleh penulis yang dapat memilih untuk membuka di tab baru alih-alih jendela baru; ini adalah preferensi pengguna . (Perhatikan bahwa preferensi pengguna default di sebagian besar browser adalah untuk tab baru, jadi tes sepele pada browser di mana preferensi itu belum diubah tidak akan menunjukkan ini.)
CSS3 mengusulkan target-baru , tetapi spesifikasinya diabaikan .
The sebaliknya tidak benar; dengan menentukan dimensi untuk jendela di argumen ketiga
window.open()
, Anda dapat memicu jendela baru saat preferensi untuk tab.sumber
window.open
memberitahu browser untuk membuka sesuatu yang baru, maka browser membuka apa yang dipilih dalam pengaturannya - tab atau jendela. Di browser yang Anda uji dengan, ubah pengaturan untuk membuka di jendela baru, bukan tab dan Anda akan melihat solusi yang lain salah.Ini sebuah trik,
Dalam kebanyakan kasus, ini harus terjadi secara langsung di
onclick
handler untuk tautan untuk mencegah pemblokir pop-up, dan perilaku "jendela baru" default. Anda bisa melakukannya dengan cara ini, atau dengan menambahkan pendengar acara keDOM
objek Anda .http://www.tutsplanet.com/open-url-new-tab-using-javascript/
sumber
window.open()
tidak akan terbuka di tab baru jika tidak terjadi pada acara klik yang sebenarnya. Dalam contoh yang diberikan URL sedang dibuka pada acara klik yang sebenarnya. Ini akan berfungsi asalkan pengguna memiliki pengaturan yang sesuai di browser .Demikian pula, jika Anda mencoba melakukan panggilan Ajax dalam fungsi klik dan ingin membuka jendela keberhasilan, pastikan Anda melakukan panggilan Ajax dengan
async : false
opsi yang ditetapkan.sumber
async: false
tidak berfungsi di Chrome. Untuk membuka jendela baru dari callback, Anda harus terlebih dahulu membuka jendela kosong sebelum mengirim permintaan HTTP dan kemudian memperbaruinya. Ini hack yang bagus .window.open
Tidak Dapat Diandalkan Buka Popup di Tab Baru di Semua PerambanBrowser yang berbeda menerapkan perilaku
window.open
dengan cara yang berbeda, terutama yang berkaitan dengan preferensi browser pengguna. Anda tidak dapat mengharapkan perilaku yang sama untukwindow.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
: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 ) :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 suatuonclick
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 untukwindow.open
menjadi kenyataan di semua Internet Explorer, Firefox, dan Chrome, karena berbagai cara mereka menangani preferensi browser pengguna.Bacaan Tambahan
window.open
dokumentasi .sumber
Satu liner:
Itu menciptakan
a
elemen virtual , memberikannyatarget="_blank"
sehingga terbuka di tab baru, memberinya yang tepaturl
href
dan kemudian mengkliknya.Dan jika Anda mau, berdasarkan itu Anda dapat membuat beberapa fungsi:
dan kemudian Anda bisa menggunakannya seperti:
Catatan penting:
openInNewTab
(dan juga solusi lain pada halaman ini) harus dipanggil selama panggilan balik aksi pengguna - mis. acara klik di dalam (tidak perlu dalam fungsi panggilan balik secara langsung, tetapi selama aksi klik).Jika Anda akan memanggilnya secara manual dalam beberapa saat acak (mis. Di dalam interval atau setelah respons server) - itu mungkin diblokir oleh browser (yang masuk akal karena itu akan menjadi risiko keamanan dan mungkin menyebabkan pengalaman pengguna yang sangat buruk) )
sumber
$('<a />',{'href': url, 'target', '_blank'}).get(0).click();
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
Jika Anda menggunakannya
window.open(url, '_blank')
, itu akan diblokir (pemblokir popup) di Chrome.Coba ini:
Dengan JavaScript murni,
sumber
the request was made in a sandboxed frame whose 'allow-popups' permission is not set
Untuk menguraikan jawaban Steven Spielberg, saya melakukan ini dalam kasus seperti ini:
Dengan cara ini, tepat sebelum browser akan mengikuti tautan saya mengatur atribut target, sehingga itu akan membuat tautan terbuka di tab atau jendela baru ( tergantung pada pengaturan pengguna ).
Satu contoh baris di jQuery:
Ini juga dapat dicapai hanya dengan menggunakan DOM API peramban asli juga:
sumber
Saya menggunakan yang berikut ini dan bekerja dengan sangat baik!
sumber
Saya pikir Anda tidak bisa mengendalikan ini. Jika pengguna telah mengatur browser mereka untuk membuka tautan di jendela baru, Anda tidak bisa memaksanya untuk membuka tautan di tab baru.
JavaScript terbuka di jendela baru, bukan tab
sumber
Fakta yang menarik adalah bahwa tab baru tidak dapat dibuka jika tindakan tidak dipanggil oleh pengguna (mengklik tombol atau sesuatu) atau jika asinkron, misalnya, ini TIDAK akan terbuka di tab baru:
Tetapi ini mungkin terbuka di tab baru, tergantung pada pengaturan browser:
sumber
<script>open('http://google.com')</script>
ke.html
file dan buka di instalasi baru dari versi terbaru Firefox; Anda akan mengamati bahwa Firefox dengan senang hati membuka Google di tab baru (mungkin setelah Anda mengatakannya untuk mengizinkan popup), bukan jendela baru.Hanya menghilangkan parameter [strWindowFeatures] akan membuka tab baru, KECUALI pengaturan browser yang ditimpa (pengaturan browser mengalahkan JavaScript).
Jendela baru
Tab baru
-- atau --
sumber
sumber
Anda dapat menggunakan trik dengan
form
:Demo jsFiddle
sumber
name
kunci &value
sebagai untuk semua parameter di dalam params kueri. Dan kemudian menyerahkan formulira
tag daripada formulir, dan menggunakan.click()
metode jQuery untuk "mengirimkan" itu. periksa jawaban sayaIni tidak ada hubungannya dengan pengaturan browser jika Anda mencoba membuka tab baru dari fungsi kustom.
Di halaman ini, buka konsol JavaScript dan ketik:
Dan itu akan mencoba membuka sembulan terlepas dari pengaturan Anda, karena 'klik' berasal dari tindakan kustom.
Untuk berperilaku seperti 'klik mouse' yang sebenarnya pada suatu tautan, Anda harus mengikuti saran @ spirinvladimir dan benar - benar membuatnya:
Ini adalah contoh lengkap (jangan mencobanya di jsFiddle atau editor online serupa, karena tidak akan membiarkan Anda mengarahkan ulang ke halaman eksternal dari sana):
sumber
w = window.open("placeholder"); $.ajax(...ajax call that returns the url...) success (...w.location = data.url...)
sesuai theandystratton.com/2012sumber
JQuery
JS
sumber
Atau Anda bisa membuat elemen tautan dan mengekliknya ...
Ini seharusnya tidak diblokir oleh pemblokir popup ... Semoga.
sumber
Ada jawaban untuk pertanyaan ini dan itu bukan tidak.
Langkah 1: Buat tautan yang tidak terlihat:
<a id="yourId" href="yourlink.html" target="_blank" style="display: none;"></a>
Langkah 2: Klik tautan itu secara terprogram:
document.getElementById("yourId").click();
Ini dia! Membuat saya terpesona.
sumber
Saya meneliti banyak informasi tentang cara membuka tab baru dan tetap di tab yang sama. Saya telah menemukan satu trik kecil untuk melakukannya. Mari kita asumsikan Anda memiliki url yang perlu Anda buka - newUrl dan lama url - currentUrl , yang harus tetap aktif setelah tab baru dibuka. Kode JS akan terlihat seperti berikut:
sumber
Bagaimana menciptakan
<a>
dengan_blank
sebagaitarget
nilai atribut danurl
sebagaihref
, dengan tampilan gaya: disembunyikan dengan elemen anak-anak? Kemudian tambahkan ke DOM dan kemudian picu acara klik pada elemen anak-anak.MEMPERBARUI
Itu tidak berhasil. Browser mencegah perilaku default. Itu bisa dipicu secara pemrograman, tetapi tidak mengikuti perilaku default.
Periksa dan lihat sendiri: http://jsfiddle.net/4S4ET/
sumber
Membuka tab baru dari dalam ekstensi Firefox (Mozilla) seperti ini:
sumber
Cara ini mirip dengan solusi di atas tetapi diimplementasikan secara berbeda
.social_icon -> beberapa kelas dengan CSS
sumber
Ini mungkin peretasan, tetapi di Firefox jika Anda menentukan parameter ketiga, 'layar penuh = ya', ini akan membuka jendela baru.
Sebagai contoh,
Tampaknya benar-benar mengesampingkan pengaturan browser.
sumber
ini berfungsi untuk saya, cukup cegah acara, tambahkan url ke
<a>
tag
lalu picu acara klik itutag
.sumber
The
window.open(url)
akan membuka url di browser baru Tab. Di bawah ini alternatif JS untuk ituinilah contoh yang berfungsi (snipet stackoverflow tidak memungkinkan untuk membuka tab baru)
sumber
Apakah membuka URL di tab baru atau jendela baru, sebenarnya dikendalikan oleh preferensi browser pengguna. Tidak ada cara untuk menimpanya dalam JavaScript.
window.open()
berperilaku berbeda tergantung pada bagaimana itu digunakan. Jika itu disebut sebagai hasil langsung dari tindakan pengguna , katakanlah klik tombol, itu akan berfungsi dengan baik dan buka tab baru (atau jendela):Namun, jika Anda mencoba untuk membuka tab baru dari panggilan balik permintaan AJAX , browser akan memblokirnya karena itu adalah tindakan pengguna langsung.
Untuk mem-bypass pemblokir popup dan membuka tab baru dari panggilan balik, berikut ini sedikit hack :
sumber
Saya mencoba cara ini dan sepertinya berfungsi dengan baik
Saya telah menemukan banyak contoh kerja di sini:
http://www.gtalbot.org/FirefoxSection/Popup/PopupAndFirefox.html#TestPopupControl
sumber
Saya akan sedikit setuju dengan orang yang menulis (diparafrasakan di sini): "Untuk tautan di halaman web yang ada, browser akan selalu membuka tautan di tab baru jika halaman baru itu merupakan bagian dari situs web yang sama dengan halaman web yang ada. " Bagi saya, setidaknya, "aturan umum" ini berfungsi di Chrome, Firefox, Opera, IE, Safari, SeaMonkey, dan Konqueror.
Bagaimanapun, ada cara yang tidak terlalu rumit untuk mengambil keuntungan dari apa yang disajikan oleh orang lain. Dengan asumsi kita berbicara tentang situs web Anda sendiri ("thissite.com" di bawah), di mana Anda ingin mengontrol apa yang dilakukan browser, maka, di bawah ini, Anda ingin "specialpage.htm" menjadi KOSONG, tidak ada HTML sama sekali di dalamnya ( menghemat waktu pengiriman data dari server!).
sumber
Jika Anda hanya ingin membuka tautan eksternal (tautan yang menuju ke situs lain) maka sedikit JavaScript / jQuery ini berfungsi dengan baik:
sumber
Browser akan selalu membuka tautan di tab baru jika tautannya berada di domain yang sama (di situs web yang sama). Jika tautan ada di beberapa domain lain, itu akan membukanya di tab / jendela baru, tergantung pada pengaturan browser.
Jadi, menurut ini, kita dapat menggunakan:
Dan tambahkan beberapa kode jQuery:
Jadi, pertama buka jendela baru di situs web yang sama dengan target _blank (itu akan membukanya di tab baru), dan kemudian buka situs web yang Anda inginkan di dalam jendela baru itu.
sumber