Buka URL ini di tab baru (dan bukan jendela yang baru) menggunakan JavaScript

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.

Mengomentari pertanyaan (16)

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/

Komentar (32)
Larutan

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.

Komentar (31)

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.

Komentar (15)

jendela.buka Tidak dapat Membuka Popup di Tab Baru di Semua Browser

Browser 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, &#39;_blank&#39;) 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).

Demonstrasi

Pergi ke browser anda's pengaturan dan mengkonfigurasi untuk buka popup di jendela baru.

Internet Explorer (11)

Test Page

Setelah pengaturan Internet Explorer (11) untuk membuka popup pada jendela baru seperti yang ditunjukkan di atas, menggunakan berikut test page untuk menguji jendela.buka:




    Test




      <code>window.open(url)</code>


      <code>window.open(url, '_blank')</code>


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.

Apa Tentang Chrome? Menerapkan 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):




    Test




      <code>window.open(url)</code>


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.

Ringkasan

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.

Bacaan Tambahan

Komentar (2)

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"); 
Komentar (6)

Jika anda menggunakan jendela.open(url, &#39;_blank&#39;), 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;
};
Komentar (9)

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).

Komentar (1)

Saya menggunakan kode berikut dan bekerja sangat baik!!!

window.open(url, '_blank').focus();
Komentar (3)

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');              
    }
});
Komentar (4)

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

Komentar (0)

Hanya menghilangkan [strWindowFeatures] parameter akan terbuka tab baru, KECUALI pengaturan browser menimpa (pengaturan browser mengalahkan JavaScript).

Jendela baru

var myWin = window.open(strUrl, strWindowName, [strWindowFeatures]);

Tab baru

var myWin = window.open(strUrl, strWindowName);

-- atau --

var myWin = window.open(strUrl);
Komentar (1)

Anda dapat menggunakan trik dengan form:

$(function () {
    $('#btn').click(function () {
        openNewTab("http://stackoverflow.com")
        return false;
    });
});

function openNewTab(link) {
    var frm = $('')
    $("body").append(frm);
    frm.submit().remove();
}

[demo jsFiddle][1]

Komentar (3)
(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')))
Komentar (3)

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):





    #firing_div {
      margin-top: 15px;
      width: 250px;
      border: 1px solid blue;
      text-align: center;
    }



  <a id="my_link" href="http://www.google.com"> Go to Google </a>
  <div id="firing_div"> Click me to trigger custom click </div>

<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>
Komentar (6)
function openTab(url) {
  const link = document.createElement('a');
  link.href = url;
  link.target = '_blank';
  document.body.appendChild(link);
  link.click();
  link.remove();
}
Komentar (2)

Ada jawaban untuk pertanyaan ini dan itu tidak ada.

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.

Komentar (1)

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.

Komentar (3)

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.

UPDATE

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: http://jsfiddle.net/4S4ET/

Komentar (1)

Jika itu adalah sesuatu yang anda hanya mencoba untuk beban ke elemen, cobalah menggunakan ini. Pada halaman beban itu akan menambah target anda dengan benar atribut.

$(your_element_here).prop('target', '_blank');

Komentar (1)

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.

Komentar (1)