给博客所有外站连接设置新窗口打开

  首先新窗口打开的标签就是设置target属性的值为_blank,这点大部分人都知道,但是问题是在新的HTML标准中将这一点给去除掉了,导致一个结果就是使用该标签会导致网页不符合标准,所以就有人想出了用JS的方式来跳过。

  当然可以用纯JS来实现,但是这里还是直接用jQuery,方便一些,也显得直观一些,一种有一个正则表达式用来获取当前超链接标签的域名,然后和location.hostname进行对比,就达到了效果。

  还有一点,站内同样有一些此类的链接,该如何实现了,网上推荐的是设置rel属性为external(外部的),然后通过JS实现。而使用attr方法很容易取得这个值,然后转换为小写,对比一下就OK。

/* 代码不复杂就没有写注释了 */
jQuery("a").each(function (id, elem) {
    var parse = elem.href.match(/^(([a-z]+):\/\/)?([^\/\?#]+)\/*([^\?#]*)\??([^#]*)#?(\w*)$/i);
    if ((parse != null && parse.length > 3
        && parse[3] != location.hostname)
        || (jQuery(elem).attr("rel")+"").toLowerCase() == "external") {
        jQuery(elem).attr("target", "_blank");
    }
});

10条评论在“给博客所有外站连接设置新窗口打开”

回复 恋羽   取消