使用 jQuery 在新窗口打开外部链接

很多时候,我们并不希望在当前的窗口打开外部链接,但是为每个超链接都加上target="_blank"又非常的麻烦,而且这样也不符合 W3C 标准。那有没有什么其他的方法可以搞定呢?当然有,其实只要用 jQuery 去劫持所有超链接的click事件,然后简单处理一下,即可达到目的,代码如下:

jQuery(document).delegate('a', 'click', function() {
  var root = location.href.replace(location.pathname + location.search + location.hash, '');

  if ( !this.href ) return;

  if ( this.href.indexOf(root) != 0 ) {
    window.open(this.href);
    return false;
    }
});

另一个版本

主机名可以直接得到,然后判断一下即可:

jQuery(document).ready(function($) {
    $("a").each(function() {
        if(this.href.indexOf(location.hostname) == -1) {
            $(this).attr("target", "_blank");
        }
    });
});

相对而言,这个版本似乎更为简便。

Posted on 2010-08-18

No Comments

Leave a Comment