JavaScript: location.href yeni pencerede / sekmede açılır?


389

Üçüncü taraf bir geliştiriciden bir JavaScript dosyam var. Geçerli sayfayı hedefle değiştiren bir has bağlantısı vardır. Bu sayfanın yeni bir sekmede açılmasını istiyorum.

Şimdiye kadar sahip olduğum şey bu:

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

Biri bana yardım edebilir mi?

Yanıtlar:


931
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
Bahsetmeye değer: Yeni bir sekme veya pencere oluşturulup oluşturulmadığı tarayıcı tarafından belirlenir (ayar).
jAndy

4
@alex Önemli cevabı okunabilir hale getirmek için bu cevabı düzenledim. Biçimlendirmemi onaylamazsanız, ikinci parametrenin denetlenmeyen bölgeye sığması için URL'nin kısaltılmasını önerebilir miyim?
Phrogz

5
@ErickBest Bu yanlış. "_blank"pencerenin / sekmenin yeni olacağını garanti eder. (Diğer özel adların yanı sıra) başka herhangi bir şey o pencereye belirli bir ad verir ve bu hedefe sonraki bağlantılar pencereyi yeniden kullanır. jsFiddle .
alex

2
Bu, modern tarayıcılarda bir pop-up blok bildirimini tetikler, hiç bir _blankçapa tıklamasını simüle etmez .
Nathan Hornby

22
pop-up tarayıcı tarafından engellendi.
Jitendra Pancholi

24

location.hrefAçılır pencere sorunlarından kaçınmak için kullanmak isterseniz, boş bir <a>ref kullanabilir ve ardından tıklamak için javascript kullanabilirsiniz.

HTML'deki gibi bir şey

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

Sonra javascript aşağıdaki gibi tıklayın

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

13
Bu çözüm için umutluydum, ancak yine de pop-up bloğu tetikliyor gibi görünüyor (en azından Chrome'da). Tarayıcının bir javascript tıklaması olduğunu ve farklı davrandığını bildiğini hissediyorum.
Nathan Hornby

1
Teşekkürler Nathan. Çok haklısın. Hala açılır bir blok mesajı alıyorsunuz. Tedavi edeceğimi düşündüm. Teoride işe yaramış olmalıydı. Andrew
Andrew Field

2
$("#anchorID")[0].click(); Bu çözümü jquery ile kullanmak için.
theBell

1
Lol theBell, Doğrudan DOM Elementine erişiyorsanız jQuery değil[0]
Andre Figueiredo

7

İle yeni bir pencerede açabilirsiniz window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Yeni sekmede açmak istiyorsanız, geçerli sayfayı iki sekmede açın ve ardından hem geçerli sayfanın hem de yeni sayfanın alınmasını sağlamak için komut dosyasının tümünü çalıştırın.


6

Window.open yerine saf JS alternatifi

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

işte örnek (stackoverflow snippet'lerinin açılmasına izin vermiyor)


0

Örneğin:

    $(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();

    });

Çalışma örneği .


Tarayıcı tarafından pop-up engellendi.
Millar248

1
Bu, bir reklam engellemeniz veya onu engelleyen başka bir şeyiniz olduğu anlamına gelir. Varsayılan davranış normal koşullar altında çalışıyor olmalıdır
Andrey Seregin

0

Ayrıca, aşağıdaki gibi bir parametreyle bir eylem yöntemini çağıran yeni bir sekme açabilirsiniz:

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

Birinci ve ikinci satır gerekli mi? reportDateVe urldeğişkenleri olmadan çalışmaz mı?
Fun for

Parametreyi (reportDate) çıkarabilirsiniz, ancak url var önemlidir çünkü eylem yöntemine çağrıyı içerir.
Primoshenko
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.