在xhtml1.0 Strict以及再往后的版本xhtml1.1和xhtml2.0中,去掉了target属性,而在xhtml1.0 Transitional以及更低版本中可以使用,详情见http://blog.csdn.net/qihboy/archive/2004/12/31/236043.aspx
那么为什么要去掉这个在以前的版本中看起来很有用的属性呢?W3C是这样解释的,为了提高网页的质量,提高易用性,这一点和508 section以及AA等级有关.尽量地让链接只在一个浏览器窗口中来回跳转,而不要弹出新窗口,因为弹出的新窗口没有"后退"选项!
即使这样,我们还是要在一定的时候需要弹出新窗口来,比如说友情链接部分,我不想让我的用户因为友情链接就这样离开我的站了,怎么办?只有打开新的窗口来显示友情链接.那么在符合标准的情况下如何解决呢?那只好用javascript了.如下面的链接
<a href=”http://www.3rgb.com” onclick=”window.open('http://www.3rgb.com');return false;” onkeypress=”window.open('http://www.3rgb.com');return false;”>生活新色彩</a>
至于javascript弹出新窗口的用法,就不解释了.支持JS的浏览器中点击上面的链接,会弹出新窗口,由于onclick事件中有个return false,所以后面的onkeypress事件就不会发生,并且href这个事件也不会发生,也就是弹出新窗口,原窗口也不跳.如果没有return false那么原窗口和新窗口都转到http://www.3rgb.com这个链接了.
有人要问了,那为什么后面还要加个onkeypress事件呢,并且触发的功能也是一样的?这是因为,对于一些早期版本的或是别的厂商的浏览器,不支持onclick用法,却对onkeypress用法感冒,这样的话,就兼容了绝大多数的浏览器的.
有人喜欢这样写<a href=”javascript:window.open('http://www.3rgb.com');”>生活新色彩</a>,虽然这样子可能也能通过验证(我没试过),但是这样会造成可访问性的问题.比如说,如果某个用户的浏览器禁用了javascript,甚至可能用户的浏览器根本就不支持javascript的话,那么你这个链接就成了"死链",用户无法达到他想要去的页面了,所以在我的方法里href属性不能丢,即使是最古老或是最怪异的浏览器,也会支持href属性的,当然我们牺牲了弹出新窗口这个功能,但可能对于这些极少数的用户,我们已经不会去考虑弹新窗口的问题了.
/over