在我的网站上,我有很多外部链接,以及内部链接。 我想在javascript或w / e中使用某种解决方案检测外部链接并在新选项卡中打开它们,但保留内部链接在同一选项卡中打开。 谢谢! =)
答案 0 :(得分:3)
function getXterlinks()
{
var Xterlinks = document.getElementsByTagName('A');
for (var i=0;i<Xterlinks.length;i++)
{
var eachLink = Xterlinks[i];
var regexp_isYourdomain="your-domain.com";
var regexp_ishttp=/(http(.)*:\/\/)/;
if( (eachLink.href != null) && (eachLink.href.match(regexp_isYourdomain) == null) && eachLink.href.match(regexp_ishttp)!=null )
{
eachLink.target ="_blank";
}
}
}
答案 1 :(得分:0)
是的,好吧,jQuery仍然是JavaScript。怎么样:
$('a[href^="http://your-domain.com"]').attr("target", "_self");
$('a').not('a[href^="http://your-domain.com"]').attr("target", "_blank");
不确定第二个,但是你明白了。
答案 2 :(得分:0)
我为我的个人网站写了这个解决方案。只要你喜欢jQuery(你应该,imho),你可以将它包含在一个常见的js文件中并忘掉它。它将与动态内容一起使用,如果您设置target =“_ blank”,则不会强制在当前选项卡中打开内部链接。
$(function() {
$('body').on('click', 'a', function() {
var currentHost = document.location.protocol+'//'+document.location.hostname;
if (this.href.indexOf(currentHost) != 0 && (this.href.indexOf('http') == 0 || this.href.indexOf('ftp') == 0)) {
window.open(this.href, '_blank');
return false;
}
});
});
注意:如果您使用的是jQuery&lt; 7,使用.bind()代替.on()
在http://www.seanknutson.com上查看此操作。