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?

iamjonesy
sumber

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.
);
alex
sumber
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();
bidang andrew
sumber
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.

pengguna616639
sumber
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)

Kamil Kiełczewski
sumber
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 .


sumber
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');
Primoshenko
sumber
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