There is no attribute target for this element

There is no attribute target for this element

此元素没有 target 属性的标签,There is no attribute target for this element.

在W3C校验中出现此错误的行一般都是有target="_blank",我们采用过渡型的DOCTYPE transitional. dtd时没有问题,但是当我们使用严格的DOCTYPE District时,这个方法将通不过W3C的校验,会出现如下错误提示:

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

原来在HTML4.01/XHTML1.0/XHTML1.1严格DOCTYPE下,target="_blank"、target="_self"等等语法都是无效的,有些人就问为什么不允许使用target="_blank",这个属性很方便啊。其实这些标准的制定都是经过一些专家的论证的,主要是从“易用性、友好性”方面考虑,而target=_blank这个功能就好比是在强奸用户的行为,不经过用户允许便打开一个新的浏览器窗口,不符合友好性的原则,所以才被去除掉了。那我想用怎么办,其实也不是没有办法。

在dstrict声明下,去掉了target又新增了一种标签,那就是rel,我们便可以利用此标签,结合js脚本实现在新窗口中打开的目的。方法如下:

运用rel属性:
<a href="document.html" rel="external">external link</a>

现在我们构建了一个符合Web标准的新开窗口的链接,我们还需要运用JavaScript是其实现新开窗口.脚本要实现的工作是当网页加载时,找到文档里的所有那些我们定义为rel="external"的超链接.

首先我们要判断浏览器.
if (!document.getElementsByTagName) return;

getElementsByTagName是DOM1标准里一个容易使用的方法,且它被现在的大多数浏览器所支持,因为一些旧的浏览器如Netscape 4和IE4不支持DOM1,所以我们必须通过判定这一方法是否存在来排除这些旧版本的浏览器.

下一步,我们通过getElementsByTagName方法取得文档里所有的<a>标签:
var anchors = document.getElementsByTagName("a");

anchors被赋值为包含各个<a>标签的数组,现在我们必须遍历各个<a>标签并且修改它:

for (var i=0; i < anchors.length; i++) {
var anchor = anchors;

找到要实现新开窗口的<a>标签
以下是引用片段:
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "external") 

接下来.建立属性值target并赋值"_target":
anchor.target = "_blank";

完整的代码:

以下是引用片段:
function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var anchor = anchors;
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "external")
anchor.target = "_blank";
}
}
window.onload = externalLinks;

至此,我们完美的解决了上面的问题。

本文出自:青岛网站建设 青岛SEO http://www.elingxi.com

 

原文链接地址:http://www.elingxi.com/a/css/0RC22010.html