如何使用javascript匹配外部链接(但忽略子域)?

时间:2010-02-24 14:53:01

标签: javascript jquery

我有以下(jquery)选择器寻找外部链接。

这样做,并忽略包含location.hostname 的所有链接(例如www.domain.com)

我的问题是,如何将此扩展为忽略指向您网站子域的链接? (例如new.domain.com)

$('a').each(function() {

    var href = $(this).attr('href');

    if(this.hostname && this.hostname !== location.hostname) 
    {    
        $(this)
            .removeAttr('target')
            .attr('rel', 'external')                
            .attr('title', href)
            .click(function() {
                window.open($(this).attr('href'));
                return false;
            });
        }
});

2 个答案:

答案 0 :(得分:4)

$('a').filter(function() {      
        return this.hostname && this.hostname !== location.hostname && this.hostname.indexOf('.'+location.hostname)!=-1
      })

答案 1 :(得分:0)

如果您知道您的子域名与您网站的主机名相关的内容,那么您可以直接制作一个正则表达式。例如,如果您的主机名始终是x.y.z,那么您可以拆分主机名的最后两个部分,并忽略主机名以相同方式结束的任何锚点。

var parts = location.hostname.split('.'),
   domainMatch = new RegExp('[^.]*\\.' + parts[1] + '\\.' + parts[2] + '$');

if (this.hostname && !domainMatch.test(this.hostname)) {
 // ...
}