Saya memiliki kotak pilih yang memanggil window.open(url)
saat item dipilih. Firefox akan membuka halaman di tab baru secara default. Namun, saya ingin halaman dibuka di jendela baru, bukan tab baru.
Bagaimana saya bisa mencapai ini?
Saya memiliki kotak pilih yang memanggil window.open(url)
saat item dipilih. Firefox akan membuka halaman di tab baru secara default. Namun, saya ingin halaman dibuka di jendela baru, bukan tab baru.
Bagaimana saya bisa mencapai ini?
Jawaban:
Berikan jendela 'spesifikasi' parameter dengan lebar / tinggi. Lihat di sini untuk semua opsi yang memungkinkan.
window.open(url, windowName, "height=200,width=200");
Ketika Anda menentukan lebar / tinggi, itu akan membukanya di jendela baru, bukan tab.
Anda tidak perlu menggunakan tinggi, pastikan Anda menggunakan _blank
, Tanpa itu, itu terbuka di tab baru.
Untuk jendela kosong:
window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
Untuk URL tertentu:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
diperlukan ketika JS dipanggil dari tombol atau elemen anchor.
location=0
pada parameter. Saya juga menyarankan penamaan jendela daripada menggunakan menggunakan _blank
target, sehingga jendela yang sama digunakan lagi jika pengguna mengklik beberapa kali elemen yang membuka popup, dan merantai dengan focus()
popup yang sudah terbuka mendapat fokus:window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
Saya mungkin salah, tetapi dari apa yang saya pahami, ini dikendalikan oleh preferensi browser pengguna, dan saya tidak percaya bahwa ini bisa diganti.
Mencoba:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
Saya memiliki beberapa kode yang melakukan apa yang Anda katakan, tetapi ada banyak parameter di dalamnya. Saya pikir ini adalah minimum, beri tahu saya jika itu tidak berhasil, saya akan memposting sisanya.
OK, setelah melakukan banyak tes, ini kesimpulan saya:
Ketika Anda melakukan:
window.open('www.yourdomain.tld','_blank');
window.open('www.yourdomain.tld','myWindow');
atau apa pun yang Anda masukkan di bidang tujuan, ini tidak akan mengubah apa pun: halaman baru akan dibuka di tab baru (jadi tergantung pada preferensi pengguna)
Jika Anda ingin halaman dibuka di jendela "nyata" baru, Anda harus memasukkan parameter tambahan. Suka:
window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');
Setelah pengujian, tampaknya parameter tambahan yang Anda gunakan, jangan 'benar-benar penting: ini bukan fakta Anda meletakkan "parameter ini" atau "ini yang lain" yang menciptakan "jendela nyata" baru tetapi faktanya ada parameter baru (s ).
Tetapi ada sesuatu yang membingungkan dan dapat menjelaskan banyak jawaban yang salah:
Ini:
win1 = window.open('myurl1', 'ID_WIN');
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
Dan ini:
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
win1 = window.open('myurl1', 'ID_WIN');
TIDAK akan memberikan hasil yang sama.
Dalam kasus pertama, saat Anda pertama kali membuka halaman tanpa parameter tambahan, itu akan terbuka di tab baru . Dan dalam hal ini, panggilan kedua juga akan dibuka di tab ini karena nama yang Anda berikan.
Dalam kasus kedua, karena panggilan pertama Anda dilakukan dengan parameter tambahan, halaman akan dibuka di " jendela nyata " yang baru. Dan dalam hal ini, bahkan jika panggilan kedua dilakukan tanpa parameter tambahan, itu juga akan dibuka di " jendela nyata " baru ini ... tetapi tab yang sama!
Ini berarti panggilan pertama itu penting karena memutuskan di mana harus meletakkan halaman.
Anda seharusnya tidak perlu. Izinkan pengguna untuk memiliki preferensi apa pun yang mereka inginkan.
Firefox melakukan itu secara default karena membuka halaman di jendela baru itu menjengkelkan dan halaman tidak boleh diizinkan untuk melakukannya jika bukan itu yang diinginkan oleh pengguna. (Firefox memang memungkinkan Anda untuk membuka tab di jendela baru jika Anda mengaturnya seperti itu).
Anda dapat mencoba fungsi berikut:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
Kode HTML untuk eksekusi:
<a href="#" onclick="open('http://www.google.com')">google search</a>
popup.location = URL;
? The window.open()
panggilan harus membukanya ke URL yang tepat, dan dalam contoh kode Anda, URL
tidak didefinisikan sehingga akan jatuh kembali ke eksperimental (dan tidak banyak dukungan) objek URL . Sementara menggunakannya untuk itu masih bisa diperdebatkan, saya ingin tahu apa motivasi untuk penggunaannya di sini?
Kuncinya adalah parameter:
Jika Anda memberikan Parameter [Tinggi = "", Lebar = ""], maka itu akan terbuka di jendela baru.
Jika Anda TIDAK memberikan Parameter, maka akan terbuka di tab baru.
Diuji di Chrome dan Firefox
Menariknya, saya menemukan bahwa jika Anda memasukkan string kosong (sebagai lawan dari string nol, atau daftar properti) untuk atribut ketiga window.open, itu akan terbuka di tab baru untuk Chrome, Firefox, dan IE. Jika tidak ada, perilakunya berbeda.
Jadi, ini panggilan baru saya:
window.open(url, windowName, '');
coba metode itu .....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}
Bagi saya solusinya adalah memiliki
"location=0"
dalam parameter ke-3. Diuji pada FF / Chrome terbaru dan versi lama IE11
Pemanggilan metode lengkap yang saya gunakan adalah di bawah ini (Karena saya ingin menggunakan lebar variabel):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
Saya baru saja mencoba ini dengan IE (11) dan Chrome (54.0.2794.1 canary SyzyASan):
window.open(url, "_blank", "x=y")
... dan dibuka di jendela baru.
Yang artinya Clint pachl sudah benar ketika dia mengatakan bahwa memberikan salah satu parameter akan menyebabkan jendela baru terbuka.
- dan ternyata itu tidak harus menjadi parameter yang sah!
(YMMV - seperti yang saya katakan, saya hanya mengujinya di dua tempat ... dan peningkatan selanjutnya mungkin membatalkan hasil, dengan cara apa pun)
ETA: Tapi saya perhatikan - di IE, jendelanya tidak memiliki dekorasi.
Dijawab di sini . Tetapi mempostingnya lagi untuk referensi.
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 berhasil asalkan pengguna memiliki pengaturan yang sesuai di browser.
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
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 disetel.
Saya memiliki pertanyaan yang sama tetapi menemukan solusi yang relatif sederhana.
Dalam JavaScript saya memeriksa untuk window.opener !=null;
menentukan apakah jendela itu pop up. Jika Anda menggunakan beberapa kode deteksi serupa untuk menentukan apakah jendela tempat situs Anda dirender adalah pop up, Anda dapat dengan mudah "mematikannya" ketika Anda ingin membuka jendela "baru" menggunakan jendela baru JavaScript.
Cukup letakkan ini di bagian atas halaman Anda, Anda ingin selalu menjadi jendela "baru" .
<script type="text/javascript">
window.opener=null;
</script>
Saya menggunakan ini pada halaman login situs saya sehingga pengguna tidak mendapatkan perilaku pop up jika mereka menggunakan jendela pop up untuk menavigasi ke situs saya.
Anda bahkan dapat membuat halaman pengalihan sederhana yang melakukan ini dan kemudian pindah ke URL yang Anda berikan. Sesuatu seperti,
JavaScript pada halaman induk:
window.open("MyRedirect.html?URL="+URL, "_blank");
Dan kemudian dengan menggunakan sedikit javascript dari sini Anda bisa mendapatkan URL dan mengarahkan ulang ke sana.
JavaScript pada Halaman Redirect:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>