,,网页打开新窗口target=_blank不符合标准
我们在新窗口中打开链接的通常方法是在链接后添加target='_blank'。我们采用过渡文档类型(xh
tml 1-过渡。dtd),但是当我们使用strict DOCTYPE(XHTML 1-strict . dtd)时,这个方法会无法通过W3C的验证,会出现下面的错误信息:
' thereanoattributetargetforthiselement(inthistmlversion)'
本来在HTML4.01/XHTML1.0/XHTML1.1的严格DOCTYPE下,target='_blank '、target='_self '等语法都是无效的,我们只能通过JavaScript来实现。
有朋友问为什么不允许target='_blank '?这个属性很方便。呵呵,不知道W3C专家怎么看。据我所知,主要是“可用性和友好性”的问题,因为外国人认为在没有得到用户同意和明确提示的情况下打开一个新窗口是不礼貌的。这个取消是否合理,我们来看看解决方案。
属性rel HTML4.0新增了一个属性:rel,用来说明链接与包含此链接的页面之间的关系,以及链接打开的目标。Rel有很多属性值,比如next、previous、chapter、section等等。我们想要使用的是rel='external '属性。原始代码是这样写的:
href=' document . html ' target=' _ blank '打开新窗口/a
现在这样写:a href=' document . html ' rel=' external '打开新窗口/a
这是一个符合严格标准的方法。当然,它必须与javascript一起工作。
完整的javascript代码JS如下:
functionexternallinks(){ if(!document.getElementsByTagName)返回;var anchors=document . getelementsbytagname(' a ');for(vari=0;ianchors.lengthI){ var anchor=anchors[I];if(anchor . get attribute(' href ')anchor . get attribute(' rel ')=' external ')anchor . target=' _ blank ';} } window.onload=externallinks
可以保存为. js文件(比如external.js),然后通过外部join方法调用:script type=' text/JavaScript ' src=' external . js '/script。
就是这样。
最后一句,我的网站采用的target='new '在过渡DOCTYPE下是允许的,但也不符合严格标准。我将在下一个版本中采用严格模式,并将所有target='new '改为rel='external'。
本条指以下条款:
KevinYank的《New-WindowlinksinaStandards-CompliantWorld》 《Standards-basedReplacementfortarget="_blank"inExternallinks》 2006年7月13日更新很多门户网站的首页都是弹出式的。我估计至少在中国,这个观念暂时还改变不了。在这种情况下,不需要在每个链接下添加rel。整个代码如下:
scripttype='text/javascript'//![CDATA[functionexternalLinks(){ if(!document.getElementsByTagName)返回;var anchors=document . getelementsbytagname(' a ');for(vari=0;ianchors.lengthI){ var anchor=anchors;if(anchor . get attribute(' href '))anchor . target=' _ blank ';} } window.onload=externalLinks//]]/script
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。