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:
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.
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');
});
$(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
kullanmanız gerekecek window.open(url);
referanslar:
http://www.htmlcodetutorial.com/linking/linking_famsupp_120.html
http://www.w3schools.com/jsref/met_win_open.asp
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.
Neyin var <a href="myurl.html" target="_blank">My Link</a>? Javascript gerekmez ...
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>
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.
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/
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: