Bunun bir tamamlanmış ve çözülmüş bir anlaşma olduğunu biliyorum, ama işte sorunu çözmek için kullandığım şey.
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
Temelde burada neler oluyor bağlantı target=_blanköznitelik olup olmadığını kontrol edin . Başlamazsa, bağlantının tetiklenmesini durdurur, yeni bir pencerede açılacak şekilde ayarlar ve ardından programlı olarak tıklar.
Bir adım ileri gidebilir ve orijinal tıklamanın durmasını atlayabilir (ve kodunuzu çok daha kompakt hale getirebilirsiniz):
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
Bir tarayıcı çapraz özellik ekleme uygulamasını soyutlamak için jQuery kullanıyorsanız, bunun yerine şunu kullanmalısınız e.target.setAttribute("target", "_blank"):
jQuery(event.target).attr("target", "_blank")
Tam kullanım durumunuza uyacak şekilde yeniden çalışmanız gerekebilir, ancak kendi kaşıntımı nasıl çizdim.
İşte size karışıklık için bir demo .
(Jsfiddle'daki bağlantı bu tartışmaya geri dönüyor .. yeni bir sekmeye gerek yok :))
target="_top"yeni bir penceredetarget="_blank"açılmaz -.