文章·资料 电脑软件 手机软件 网站源码




    本 站 搜 索
   推 荐 文 章        More...
华硕易电脑(ASUS Eee PC 10..
先来段开场白:为了外出携带方便..
Acronis True Image 使用..
  一款可以在Windows下使用..
Norton Ghost 使用详解
一、分区备份   使用Ghost..
    文 章 阅 读 排 行
“啊估文章软件站”网站系..
一、调试测试网站系统时,如何..
关于 Firefox 在中国持续..
亲爱的 Firefox 用户及 Firefox..
向日葵远程控制软件,设置..
向日葵远程控制软件有个人版和..
夸克网盘新用户注册如何获..
夸克网盘,新用户注册如何获得1..
FileZilla Server 设置参考
FileZilla Server 启动界面 ..
PakePlus 构建 APP 需要 Gi..
PakePlus 是一个基于 Rust Taur..
电脑显示器使用 HDMI 数据..
如果电脑显示器使用 HDMI 数据..
ASP/JavaScript:不刷新页..
function GuReturnElement(..
分享几个免费申请 SSL 证..
DigiCert 原 Symantec(赛门铁..
关闭微信的个性化推荐广告
有网友说到,微信的初衷是拉近..
 文 章 信 息
我对 XHTML 不支持 target 属性的联想
评论()〗〖留言〗〖收藏
〖文章分类:电脑·手机·网络 / 网站设计·开发·优化〗〖阅读选项
  前些日子,本着好奇去下载了微软的 Expression Studio 试用(还不错用),用 Expression Web 的时候,因为它会自动检测文档标准,而我惯用的 Doctype 是 XHTML 1.0 S,结果,我在n多 a 标签的 target 属性下看到了熟悉的红色波浪线……

  XHTML 从 1.0 Strict 开始就不在允许在a标签中使用 target 属性了,以前在研究 XHTML 1.1 的时候曾经遇到过这个问题,但是后来渐渐被我遗忘了。于是我又回头去网上查找了各种解决方法,也参考了一些前辈们的想法,而这些想法也改变了我对这件事的认识。

  我们知道,a 标签的 target 属性一般最常用于两个地方,一个是控制链接在新标签页(窗口)中打开,另一个则是控制链接在指定的 frame、iframe、弹出窗口中打开。

  事实上,W3C委员会是一开始就反对在a标签中使用target。也许有人要问,如果没有target,怎么才能让页面在新标签页或者新窗口中弹出呢?W3C委员会的答复是:设计者没有权利决定用户用什么方式打开页面!

  是的!这才是最大的关键所在!经常翻墙上国外Google的朋友也许会有这个印象,英文版的google.com的搜索结果,是在当前页面直接打开的,而不论当年的google.cn还是现在的google.com.hk,都是默认在新标签页中打开的。事实上,正常情况下,所有页面都应该是在当前标签页内打开,哪怕是跨站的链接,如果用户需要从新标签页中打开,他应该很习惯于从右键菜单中选择,或者按住 Ctrl + 单击,又或者一些浏览器中是 Ctrl + Shift + 单击去打开页面。而国内网民们却似乎完全没有这样的习惯,一方面他们习惯于被各种网站上混乱的链接打开方式左右,另一方面,受到这种用户习惯的影响,网页开发人员也只能遵循这一规矩,如果不在链接里加上 target 属性,反而会被客户或项目经理骂吧,而结果就是越走越远的恶性循环而已。

  明白了正确的思考方式,再回头来考虑解决方法,当然也时刻不能忘记 HTML 语义化、对人对机器都友好的初衷,那么网上盛传的集中解决方法,哪一种更合适呢?

  网上现在一般有2大类解决方法,其中第一种比较冷门,也比较有技术含量了,那就是扩展 DTD。我曾经在一位国人前辈的博客上见过这一解决方法的详细教程,老实说,我基本看不懂。不过 DOCTYPE 可以扩展这件事我倒是知道,似乎官方的规范介绍里就有强调这点。这位前辈在 DOCTYPE 中,除了原有的 DTD 外,再额外加上自己定义的扩展 DTD,从而重新加入 target 属性。这种方法从技术角度来看,似乎是最强大的,但是它也有一个缺点——从本质上来说这其实就是一种规范的倒退,如果不得不通过扩展 DOCTYPE 去实现原先 XHTML 1.0 T 里包括,而在 XHTML 1.0 S 中删除的属性的话,还不如直接使用 XHTML 1.0 T 算了。

  另一大类方法就是用 Javascript 去解决了,当然使用 Javascript 也有几种不同的用法,其中一种最笨的办法就是在每个链接里写上 onclick 属性,纯粹用 onclick 去打开窗口,但是这种做法显然弊端很多,首先是工作量很大、不便于维护,另外用户复制链接地址也会失效,而且一旦客户端发生 Javascript 运行错误,或者用户禁用了 Javascript,那整个网站就完全无法使用了。

  另一种方法这是用 Javascript 获取整个页面所有的链接元素,然后根据这些链接是否被赋予某个特定的属性,而决定是否要给它附加 onclick 事件。而这个“特定的属性”,一般最常见的是用class。而根据上文的分析,除了 class 属性外,我们还有一个更合适的、更符合语义的、对机器更友好的、更面向未来的属性可用,那就是 rel——对链接赋予一个特定的 rel 属性,说明目标网页与本站之间的关系,进而用 Javascript 将所有此类关系的链接设置为在新标签页(窗口)中打开,这样应该更符合 HTML 规范的本意一些,当然最好的做法还是不要干预。

  上文提到,target 属性还有一个用途是控制链接在指定的 frame、iframe、窗口中打开,那么这个很容易理解,因为从 XHTML 1.0 Strict 标准开始,所有的 frameset、iframe 都被禁止使用了,而既然规范也禁止浏览器支配用户打开新窗口,那么控制链接在指定窗口中打开也就毫无用途了。

文章作者:未知  更新日期:2010-10-20
〖文章浏览:〗〖发送文章〗〖打印文章
〖文章阅读说明〗
·本站大部分文章转载于网络,如有侵权请留言告知,本站即做删除处理。
·本站法律法规类文章转载自[中国政府网(www.org.cn)],相关法律法规如有修订,请浏览[中国政府网]网站。
·本站转载的文章,不为其有效性,实效性,安全性,可用性等做保证。
·如果有什么问题,或者意见建议,请联系[网站管理员]。