如何在新标签中打开外部链接

时间:2010-08-28 21:15:31

标签: javascript html hyperlink

在我的网站上,我有很多外部链接,以及内部链接。 我想在javascript或w / e中使用某种解决方案检测外部链接并在新选项卡中打开它们,但保留内部链接在同一选项卡中打开。 谢谢! =)

3 个答案:

答案 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";
        }
    }
}

来源:http://www.mediawiki.org/wiki/Manual:Opening_external_links_in_a_new_window#How_to_make_external_links_open_in_a_new_window

答案 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上查看此操作。