博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]W3C 验证 there is no attribute target for this element
阅读量:6207 次
发布时间:2019-06-21

本文共 1210 字,大约阅读时间需要 4 分钟。

 

本文转自:

 

 

我们要在新窗口中打开链接通常的做法是在链接后面加target="_blank",我们采用过渡型的DOCTYPE(xh tml1-transitional. dtd)时没有问题,但是当我们使用严格的DOCTYPE(xhtml1-strict.dtd)时,这个方法将通不过W3C的校验,会出现如下错误提示:

"there is no attribute target for this element(in this HTML version)"

原来在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="externa l"属性。原来这样写的代码:

<a href="document.html" target="_blank"> 打开一个新窗口</a>

现在要写成这样:

<a href="document.html" rel="external">打开一个新窗口</a>

这是符合strict标准的方法。当然还必须配合一个javascript才有效。

javascript

完整的代码JS如下:

         function externallinks() {

             if (!document.getElementsByTagName) return;
             var anchors = document.getElementsByTagName("a");
             for (var i = 0; i < anchors.length; i++) {
                 var anchor = anchors[i];
                 if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
                     anchor.target = "_blank";
             }
         }

 

window.onload = externallinks;

你可以把它保存成一个.js文件(比如external.js),然后通过外部联接方法调用:

<script type="text/javascript" src="external.js"></script>

 

转载地址:http://njzja.baihongyu.com/

你可能感兴趣的文章
vb.net中让控件内容为空(Control类)
查看>>
编程之美 set 9 字符串移位包含问题
查看>>
java中Comparable实现对象的比较
查看>>
如何申请开通微信多客服功能
查看>>
cocos2D-X从的源代码的分析cocos2D-X学习OpenGL(1)----cocos2D-X渲染架构
查看>>
nodejs基于art-template模板引擎生成
查看>>
c++ const放置的位置
查看>>
2016年第1本:用户体验要素--以用户为中心的产品设计
查看>>
鹅厂揭秘——高端大气的App电量測试
查看>>
iOS开发之网络编程--使用NSURLConnection实现文件上传
查看>>
Button和ImageButton
查看>>
TCP具体解释(3):重传、流量控制、拥塞控制……
查看>>
Material Design Get Started
查看>>
基于 Red5 的流媒体服务器的搭建和应用
查看>>
基于轻量型Web服务器Raspkate的RESTful API的实现
查看>>
POJ 2406 Power Strings KMP运用题解
查看>>
lintcode:Ugly Number I
查看>>
Java设计模式系列之适配器模式
查看>>
深入理解JavaScript系列(37):设计模式之享元模式
查看>>
使用top命令查看最消耗CPU和最消耗内存的进程
查看>>