首先新窗口打开的标签就是设置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");
}
});
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");
}
});
新版本去掉了target?
w3c检测会出现警告
JS实现,绿色环保。。
这是纯jq,不过有些还是需要在本页打开的好。
是的,有些确实本页比较好。
不会吧,_blank 在网页中很常用的,怎么标准中给去掉了呢。
你可以去查一下
某些时候新窗口很烦人的!但是某些时候本窗口打开又很郁闷,纠结……
我感觉只是外部链接新窗口打开应该问题不大。
真理!!!!!