Bir bağlantıyı yeni bir pencerede nasıl açabilirim?


94

Aşağıdakine benzer bir şey yapmak istediğim belirli bir bağlantı için bir tıklama işleyicim var:

window.location = url

URL'yi gerçekten yeni bir pencerede açmak için buna ihtiyacım var, bunu nasıl yaparım?

Yanıtlar:


204

Beğenebilirsin:

window.open('url', 'window name', 'window settings')

jQuery:

$('a#link_id').click(function(){
  window.open('url', 'window name', 'window settings');
  return false;
});

Ayrıca ayarlayabilirsiniz targetiçin _blankaslında.


ancak bu jquery kodu hedefe otomatik olarak
gitmeyecek

26
_blank varsayılan hedeftir, bu nedenle window.open (url) kullanmak yeterli olacaktır
themerlinproject

Emin değilim ve tam olarak aynı sorun değil, ancak bir dosyayı indirmek için aynı çözümü arıyordum (bir bağlantıdan değil, bir düğmeden) ve Chrome'da pencere açılmadı ve sadece window.location = olarak değiştirene kadar indirme yapılmadı Konumu değiştirmeyen ancak dosyayı
indiren

window.open (url) iyi :)
fudu

34

Hedefi tıklama işleyicisinin içine nasıl zorlayacağınız aşağıda açıklanmıştır:

$('a#link_id').click(function() {
    $(this).attr('target', '_blank');
});

5
Tıklatma işleyicisi jQuery seçici kullanılarak gerek yok çizgisi böylece $(this).attr('target', '_blank'); şeklinde değiştirilebilir this.target = "_blank";sayfadaki içi bağlantıları olması değiştirilebilir eğer, Ayrıca rel="external"o zaman jQuery seçici ile sayfa için küresel bir tıklama işleyicisi yaratabilecek özelliklerini a[rel="external"]yerine a sahip olmaktan ile seçilen bağlantı başına tıklama işleyicisia#link_id
himanshu

17

5
Eyvah! W3schools kullanmayın veya bağlanmayın, W3C ile ilişkili DEĞİLDİR. Bunun yerine MDN kullanın: developer.mozilla.org/en-US/docs/Web/API/Window.open
AB Carroll

5
w3schools iyidir ('birkaç' w3c trolünü göz ardı edin) ... yetkili BİR kaynak olmaya devam edecek ... şimdi w3c bile onu destekliyor ;-)
Dawesi

4

Bunun için jquery prop () yöntemini de kullanabilirsiniz.

$(function(){
  $('yourselector').prop('target', '_blank');
}); 

2

Bu soruna ilginç bir çözüm buldum. Bir web servisinden gelen dönüşe dayalı bilgileri içeren aralıklar oluşturuyordum. Aralık etrafına bir bağlantı koymayı düşündüm, böylece eğer tıklarsam "a" tıklamayı yakalar.

Ama aralık ile tıklamayı yakalamaya çalışıyordum ... bu yüzden aralığı oluştururken neden bunu yapmayacağımı düşündüm.

var span = $('<span id="something" data-href="'+url+'" />');

Daha sonra, "data-href" özniteliğine göre bir bağlantı oluşturan aralığa bir tıklama işleyicisini bağladım:

span.click(function(e) {
    e.stopPropagation();
    var href = $(this).attr('data-href');
    var link = $('<a href="http://' + href + '" />');
    link.attr('target', '_blank');
    window.open(link.attr('href'));
});

Bu, bir aralığı tıklamama ve uygun bir url ile yeni bir pencere açmama başarıyla izin verdi.



1

bu çözüm, url'nin boş olduğu ve boş bağlantının devre dışı bırakıldığı (gri) durumu da dikkate aldı.

$(function() {
  changeAnchor();
});

function changeAnchor() {
  $("a[name$='aWebsiteUrl']").each(function() { // you can write your selector here
    $(this).css("background", "none");
    $(this).css("font-weight", "normal");

    var url = $(this).attr('href').trim();
    if (url == " " || url == "") { //disable empty link
      $(this).attr("class", "disabled");
      $(this).attr("href", "javascript:void(0)");
    } else {
      $(this).attr("target", "_blank");// HERE set the non-empty links, open in new window
    }
  });
}
a.disabled {
  text-decoration: none;
  pointer-events: none;
  cursor: default;
  color: grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<a name="aWebsiteUrl" href="http://www.baidu.com" class='#'>[website]</a>
<a name="aWebsiteUrl" href=" " class='#'>[website]</a>
<a name="aWebsiteUrl" href="http://www.alibaba.com" class='#'>[website]</a>
<a name="aWebsiteUrl" href="http://www.qq.com" class='#'>[website]</a>


0

Click olayı için olay işleyici işlevi içinde AJAX isteklerini yürütmek isteyip istemediğinize dikkat edin . Bazı nedenlerden dolayı Chrome (ve belki diğer tarayıcılar) yeni bir sekme / pencere açmayacaktır.


0

Bu çok hoş bir çözüm değil ama işe yarıyor:

CSS:

.new-tab-opener
{
    display: none;
}

HTML:

<a data-href="http://www.google.com/" href="javascript:">Click here</a>
<form class="new-tab-opener" method="get" target="_blank"></form>

Javascript:

$('a').on('click', function (e) {    
    var f = $('.new-tab-opener');
    f.attr('action', $(this).attr('data-href'));
    f.submit();
});

Canlı örnek: http://jsfiddle.net/7eRLb/


0

Microsoft IE, ikinci bağımsız değişken olarak bir adı desteklemez.

window.open('url', 'window name', 'window settings');

Sorun şu ki window name. Bu çalışacak:

window.open('url', '', 'window settings')

Microsoft yalnızca aşağıdaki bağımsız değişkenlere izin verir, Bu bağımsız değişkeni kullanılıyorsa:

  • _boş
  • _media
  • _parent
  • _arama
  • _self
  • _üst

Bu Microsoft sitesine bakın


4
-1: Stackoverflow.com/a/1462500/560648 adresinden lisansı ihlal eden kopyalama / yapıştırma işleminize rağmen, bu doğru değil. Argüman olduğunu desteklenen . Boşluk, tire veya başka noktalama işaretleri içeremez. Bu soruya ilişkin diğer cevapları ve yorumları okuyun.
Orbit'te Hafiflik Yarışları
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.