I'm mencoba untuk membuka URL di tab baru, sebagai lawan untuk jendela popup.
I've melihat pertanyaan terkait dimana respon akan terlihat seperti ini:
window.open(url,'_blank');
window.open(url);
Tapi tidak satupun dari mereka bekerja untuk saya, browser masih mencoba untuk membuka jendela popup.
Ini adalah trik,
function openInNewTab(url) {
var win = window.open(url, '_blank');
win.focus();
}
Dalam kebanyakan kasus, ini harus terjadi secara langsung di onclick
handler untuk link untuk mencegah pop-up blocker, dan default "jendela baru" perilaku. Anda bisa melakukannya dengan cara ini, atau dengan menambahkan event listener untuk anda DOM
objek.
<div onclick="openInNewTab('www.test.com');">Something To Click On</div>
http://www.tutsplanet.com/open-url-new-tab-using-javascript/
Tidak ada yang dapat penulis lakukan dapat memilih untuk membuka di tab baru, bukan jendela baru; itu adalah preferensi pengguna.
CSS3 diusulkan target-new, tetapi spesifikasi ditinggalkan.
The terbalik adalah tidak benar; dengan menentukan dimensi untuk jendela di ketiga argumen dari jendela.open()
, anda dapat memicu jendela baru ketika preferensi untuk tab.
jendela.open()
tidak akan terbuka di tab baru jika hal ini tidak terjadi pada yang sebenarnya klik acara. Dalam contoh yang diberikan URL yang sedang dibuka pada aktual klik acara. Ini akan bekerja asalkan pengguna memiliki pengaturan yang sesuai pada 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 untuk melakukan panggilan Ajax dalam fungsi klik dan ingin membuka jendela pada sukses, pastikan anda melakukan panggilan Ajax dengan async : false
pilihan set.
jendela.buka
Tidak dapat Membuka Popup di Tab Baru di Semua BrowserBrowser yang berbeda menerapkan perilaku jendela.buka
dalam berbagai hal, khususnya yang berkaitan dengan user's preferensi browser. Anda tidak dapat mengharapkan perilaku yang sama untuk jendela.terbuka
untuk menjadi kenyataan di seluruh Internet Explorer, Firefox, dan Chrome, karena cara-cara yang berbeda di mana mereka menangani pengguna's preferensi browser.
Misalnya, Internet Explorer (11) pengguna dapat memilih untuk membuka popup di jendela baru atau tab baru, anda tidak bisa memaksa Internet Explorer 11 pengguna untuk membuka popup dalam cara tertentu melalui jendela.open
, seperti yang disinggung dalam Quentin's jawaban.
Adapun Firefox (29) pengguna, menggunakan jendela.open(url, '_blank')
tergantung pada browser mereka's tab preferensi, meskipun anda masih dapat memaksa mereka untuk membuka popup pada jendela baru dengan menentukan lebar dan tinggi (lihat "Apa Tentang Chrome?" bagian di bawah ini).
Pergi ke browser anda's pengaturan dan mengkonfigurasi untuk buka popup di jendela baru.
Setelah pengaturan Internet Explorer (11) untuk membuka popup pada jendela baru seperti yang ditunjukkan di atas, menggunakan berikut test page untuk menguji jendela.buka
:
<!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>
Mengamati bahwa popup dibuka di jendela baru, bukan tab baru.
Anda juga dapat menguji orang-orang cuplikan di atas di Firefox (29) dengan tab preferensi set untuk windows baru, dan melihat hasil yang sama.
jendela.buka
Berbeda dari Internet Explorer (11) dan Firefox (29).I'm tidak 100% yakin, tapi sepertinya Chrome (versi 34.0.1847.131 m
) tidak muncul untuk memiliki pengaturan yang dapat digunakan pengguna untuk memilih apakah atau tidak untuk membuka popup di jendela baru atau tab baru (seperti Firefox dan Internet Explorer memiliki). Aku memeriksa Chrome dokumentasi untuk mengelola pop-up, tapi itu tidak't menyebutkan apa-apa tentang hal semacam itu.
Juga, sekali lagi, browser yang berbeda tampaknya menerapkan perilaku jendela.buka
yang 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, tidak 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, sama potongan kode di atas akan selalu membuka tab baru di Internet Explorer 11 jika pengguna mengatur tab seperti browser mereka preferensi, bahkan tidak menentukan lebar dan tinggi akan memaksa sebuah jendela popup untuk mereka.
Jadi perilaku jendela.terbuka
di Chrome tampaknya untuk membuka popup di tab baru ketika digunakan dalam sebuah onclick
acara, untuk membukanya di jendela baru ketika digunakan dari browser console (seperti dicatat oleh orang lain), dan untuk membukanya di jendela baru ketika ditetapkan dengan lebar dan tinggi.
Browser yang berbeda menerapkan perilaku jendela.buka
berbeda berkenaan dengan pengguna' preferensi browser. Anda tidak dapat mengharapkan perilaku yang sama untuk jendela.terbuka
untuk menjadi kenyataan di seluruh Internet Explorer, Firefox, dan Chrome, karena cara-cara yang berbeda di mana mereka menangani pengguna's preferensi browser.
Salah satu kapal:
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
Menciptakan virtual a
elemen, memberikan target="_blank"
agar terbuka di tab baru, memberikan tepat url
href
dan kemudian klik itu.
Dan jika anda ingin, berdasarkan bahwa anda dapat membuat beberapa fungsi:
function openInNewTab(href) {
Object.assign(document.createElement('a'), {
target: '_blank',
href,
}).click();
}
dan kemudian anda dapat menggunakannya seperti:
openInNewTab("http://google.com");
Jika anda menggunakan jendela.open(url, '_blank')
, maka akan diblokir (popup blocker) pada Chrome.
Coba ini:
//With JQuery
$('#myButton').click(function () {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
});
Dengan JavaScript murni,
document.querySelector('#myButton').onclick = function() {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
};
Untuk menguraikan Steven Spielberg's jawaban, saya melakukan ini dalam kasus seperti:
$('a').click(function() {
$(this).attr('target', '_blank');
});
Dengan cara ini, sebelum browser akan mengikuti link saya'm menetapkan atribut target, sehingga akan membuat link terbuka di tab baru atau jendela (tergantung pada pengguna's pengaturan).
Saya menggunakan kode berikut dan bekerja sangat baik!!!
window.open(url, '_blank').focus();
Fakta yang menarik adalah bahwa tab baru tidak dapat dibuka jika tindakan ini tidak dipanggil oleh pengguna (dengan mengklik sebuah tombol atau sesuatu) atau jika itu adalah asynchronous, misalnya, ini TIDAK akan terbuka di tab baru:
$.ajax({
url: "url",
type: "POST",
success: function() {
window.open('url', '_blank');
}
});
Tapi ini mungkin terbuka di tab baru, tergantung pada pengaturan browser:
$.ajax({
url: "url",
type: "POST",
async: false,
success: function() {
window.open('url', '_blank');
}
});
Saya berpikir bahwa anda dapat't control ini. Jika pengguna telah mengatur browser untuk membuka link di jendela baru, anda dapat't force ini untuk membuka link di tab baru.
https://stackoverflow.com/questions/726761/javascript-open-in-a-new-window-not-tab
Hanya menghilangkan [strWindowFeatures] parameter akan terbuka tab baru, KECUALI pengaturan browser menimpa (pengaturan browser mengalahkan JavaScript).
var myWin = window.open(strUrl, strWindowName, [strWindowFeatures]);
var myWin = window.open(strUrl, strWindowName);
-- atau --
var myWin = window.open(strUrl);
Anda dapat menggunakan trik dengan form
:
$(function () {
$('#btn').click(function () {
openNewTab("http://stackoverflow.com")
return false;
});
});
function openNewTab(link) {
var frm = $('<form method="get" action="' + link + '" target="_blank"></form>')
$("body").append(frm);
frm.submit().remove();
}
[demo jsFiddle][1]
(function(a){
document.body.appendChild(a);
a.setAttribute('href', location.href);
a.dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
return e
}(document.createEvent('MouseEvents'))))}(document.createElement('a')))
Ini tidak ada hubungannya dengan pengaturan browser jika anda mencoba untuk membuka tab baru dari fungsi kustom.
Di halaman ini, buka JavaScript console dan ketik:
document.getElementById("nav-questions").setAttribute("target", "_blank");
document.getElementById("nav-questions").click();
Dan ia akan mencoba untuk membuka popup terlepas dari pengaturan anda, karena 'klik' berasal dari tindakan kustom.
Dalam rangka untuk berperilaku seperti yang sebenarnya 'klik mouse' pada link, anda harus mengikuti @spirinvladimir's saran dan benar-benar membuat ini:
document.getElementById("nav-questions").setAttribute("target", "_blank");
document.getElementById("nav-questions").dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
false, false, false, false, 0, null);
return e
}(document.createEvent('MouseEvents'))));
Berikut adalah contoh lengkap (jangan mencoba ini pada [jsFiddle][1] atau serupa editor online, karena itu tidak akan membiarkan anda mengarahkan ke halaman eksternal dari sana):
<!DOCTYPE html>
<html>
<head>
<style>
#firing_div {
margin-top: 15px;
width: 250px;
border: 1px solid blue;
text-align: center;
}
</style>
</head>
<body>
<a id="my_link" href="http://www.google.com"> Go to Google </a>
<div id="firing_div"> Click me to trigger custom click </div>
</body>
<script>
function fire_custom_click() {
alert("firing click!");
document.getElementById("my_link").dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, /* type, canBubble, cancelable, view */
0, 0, 0, 0, 0, /* detail, screenX, screenY, clientX, clientY */
false, false, false, false, /* ctrlKey, altKey, shiftKey, metaKey */
0, null); /* button, relatedTarget */
return e
}(document.createEvent('MouseEvents'))));
}
document.getElementById("firing_div").onclick = fire_custom_click;
</script>
</html>
saya menemukan sebuah pekerjaan yang mudah sekitar:
Langkah 1: Membuat link tak terlihat:
<id="yourId" href="yourlink.html" target="_blank" style="display: none;"></a>
Langkah 2: Klik pada link yang pemrograman:
dokumen.getElementById("yourId").klik();
Di sini anda pergi! Karya pesona bagi saya.
Atau anda hanya bisa membuat elemen link dan klik...
var evLink = document.createElement('a');
evLink.href = 'http://' + strUrl;
evLink.target = '_blank';
document.body.appendChild(evLink);
evLink.click();
// Now delete it
evLink.parentNode.removeChild(evLink);
Ini seharusnya't akan diblokir oleh setiap popup blocker... mudah-Mudahan.
Bagaimana menciptakan sebuah <a>
dengan _blank
sebagai target
nilai atribut dan url
sebagai href
, dengan gaya tampilan:tersembunyi dengan anak elemen? Kemudian tambahkan ke DOM dan kemudian memicu event klik pada anak-anak elemen.
Itu doesn't bekerja. Browser mencegah perilaku default. Hal ini bisa dipicu pemrograman, tapi itu doesn't mengikuti perilaku default.
Memeriksa dan melihat untuk diri sendiri:
Ini mungkin hack, tapi di Firefox jika anda menentukan parameter ketiga, 'fullscreen=ya', membuka segar jendela baru.
Misalnya,
<a href="#" onclick="window.open('MyPDF.pdf', '_blank', 'fullscreen=yes'); return false;">MyPDF</a>
Tampaknya benar-benar menimpa pengaturan browser.