October 31, 2007
jQuery 之 没有 ‘target’ 属性照样打开新窗口

XHTML 1.0 Strict 以上(含)的 W3C 标准已经不再支持 target='_blank' 这一非常好用的属性,这一改变很叫完美主义的网页设计者头疼。许久之前,我写过一篇文章介绍使用 jQuery 打开新窗口的方法,但没有亲自体验过;现在,我已经在这里实现了,将所有的外部链接加上了
图标,并默认以“新窗口/标签”方式打开,原理相同,方法有一点改进。(via Barry Jaspan)
先前的方法需要手工为每一个你想让它以新窗口方式打开的链接(如:外部链接)添加名为 "new-window" 的 class,不用说也想得到,这项工程是多么浩大,简直可以跟秦始皇年间修长城的工程量媲美,并且一定会出现相当数量的漏网之鱼——总之,这个方法不可取。
如果有程序能自动提取页面中的外部链接不就好了吗,于是我改造了下 Alexa 转向插件,让它自动给外部链接添加一个 rel="external" 属性,再辅以下面的 jQuery 和 CSS,一切搞定!
(正在使用阅读器看这篇文章的朋友请到页面上来,Feed 里看不到效果的,呵呵)
$(document).ready(function(){ // To do ...
$("a[rel='external']").addClass("external").click(function(){window.open(this.href);return false;});
});
$("a[rel='external']").addClass("external").click(function(){window.open(this.href);return false;});
});
.external {
background: url('images/external-link.gif') no-repeat center left;
padding-left: 10px;
}
background: url('images/external-link.gif') no-repeat center left;
padding-left: 10px;
}
update: 感谢 Cloudream 的指点,jQuery 1.2.x 的选择器推荐使用 a[rel=''],去掉了 @。

aooyun at 01:13 Nov 01, 2007 ₪
学习中。难道以后标准就没有target=’_blank’ 这个标签了么
北极冰仔 at 10:26 Nov 01, 2007 ₪
aooyun » 没错
你可以继续使用,但代码就会不符合标准,仅此而已。
underone at 11:48 Nov 01, 2007 ₪
有修改过的插件发布否?
Cloudream at 12:41 Nov 01, 2007 ₪
1.2.x的选择器推荐a[rel=] 去掉了@。
另外我觉得HTML5更有希望 XD
北极冰仔 at 12:54 Nov 01, 2007 ₪
Cloudream » 谢谢大侠,我马上就改过来。以后还请多多指点哦。
柠檬园主 at 22:38 Jan 03, 2008 ₪
$(”a[rel='external']“).addClass(”external”).attr(”target”,”new”)
yout at 11:11 Sep 01, 2008 ₪
如果禁掉了弹出窗口怎么办??
北极冰仔 at 15:16 Sep 01, 2008 ₪
@yout 这个不是popup窗口。