JavaScript: location.href untuk membuka di jendela / tab baru?


389

Saya memiliki file JavaScript dari pengembang pihak ketiga. Ini memiliki tautan yang menggantikan halaman saat ini dengan target. Saya ingin halaman ini dibuka di tab baru.

Inilah yang saya miliki sejauh ini:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

Adakah yang bisa membantu saya?

Jawaban:


932
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);

102
Layak untuk disebutkan: Apakah tab atau jendela baru dibuat, ditentukan oleh browser (pengaturan).
jAndy

4
@ alex Saya mengedit jawaban ini untuk membuat bit yang penting dapat dibaca. Jika Anda tidak menyetujui pemformatan saya, bolehkah saya menyarankan mempersingkat URL sehingga parameter kedua sesuai dengan wilayah yang tidak dikendalikan?
Phrogz

5
@ ErickBest Itu tidak benar. "_blank"menjamin bahwa jendela / tab akan menjadi baru. Apa pun yang lain (selain nama khusus lainnya) memberikan jendela itu nama spesifik, dan tautan berikutnya ke target itu akan menggunakan kembali jendela itu. jsFiddle .
alex

2
Ini hanya memicu pemberitahuan blok sembul di browser modern, tidak mensimulasikan _blankklik jangkar sama sekali.
Nathan Hornby

22
popup dicegah oleh browser.
Jitendra Pancholi

24

Jika Anda ingin menggunakan location.hrefuntuk menghindari masalah sembulan, Anda dapat menggunakan <a>referensi kosong dan kemudian menggunakan javascript untuk mengkliknya.

sesuatu seperti di HTML

<a id="anchorID" href="mynewurl" target="_blank"></a>

Kemudian klik javascript sebagai berikut

document.getElementById("anchorID").click();

13
Saya berharap untuk solusi ini, namun sepertinya masih memicu blok pop-up (setidaknya di Chrome). Saya merasa bahwa browser sadar bahwa ini adalah klik javascript dan memperlakukannya secara berbeda.
Nathan Hornby

1
Nathan terima kasih. Anda benar sekali. Anda masih mendapatkan pesan blokir pop up. Saya pikir saya akan menyembuhkannya. Secara teori seharusnya bekerja. Andrew
andrew field

2
$("#anchorID")[0].click(); untuk menggunakan solusi ini dengan jquery.
theBell

1
Lol theBell, Ini bukan jQuery jika Anda mengakses langsung DOM Element[0]
Andre Figueiredo

7

Anda dapat membukanya di jendela baru dengan window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Jika Anda ingin membukanya di tab baru, buka halaman saat ini dalam dua tab dan kemudian alllow script untuk menjalankan sehingga halaman saat ini dan halaman baru akan diperoleh.


6

Alternatif js murni untuk window.open

let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click();

di sini adalah contoh yang berfungsi (snipet stackoverflow tidak diizinkan untuk dibuka)


0

Sebagai contoh:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

Contoh kerja .


Munculan dicegah oleh browser.
Millar248

1
Ini berarti bahwa Anda memiliki adblock atau sesuatu yang memblokirnya. Perilaku default harus bekerja dalam kondisi normal
Andrey Seregin

0

Anda juga dapat membuka tab baru yang memanggil metode tindakan dengan parameter seperti ini:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

Apakah baris pertama dan kedua diperlukan? Bukankah itu akan berhasil tanpa variabel reportDatedan url?
Belajar untuk Kesenangan

Anda bisa mengambil parameter (reportDate), tetapi url var penting karena berisi panggilan ke metode tindakan.
Primoshenko
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.