`

_blank开新窗口不符合标准?

阅读更多
本文参考了以下文章:

Kevin Yank的《New-Window links in a Standards-Compliant World》
《Standards-based Replacement for target="_blank" in External links》
我们要在新窗口中打开链接通常的做法是在链接后面加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>
就是这样。

最后补充一句,我网站采用的target="new"在过渡型DOCTYPE下是允许的,但也不符合strict标准。下次改版时我将采用strict模式,将所有target="new"改成rel="external"。

分享到:
评论

相关推荐

    网页打开新窗口target=_blank不符合标准

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

    jQuery.autoTarget:在新的窗口选项卡中简单、自动且符合标准地打开外部链接

    在新窗口/选项卡中简单、自动且符合标准地打开外部链接。 为什么要自动定位? 当您编写符合标准的代码,但仍希望在新窗口中打开站外链接时,会遇到一些问题。 XHTML 1.0 Strict 不赞成使用“target”属性。 HTML5 ...

    javascript中window.open在原来的窗口中打开新的窗口(不同名)

    2. 如果不存在同名窗口,则会创建一个新窗口,并将其名称设为指定的名称。 3. 如果省略`name`参数,或者使用`_blank`,则每次都创建一个新的窗口。 4. 如果浏览器的隐私模式或者其他阻止弹窗的设置开启,window.open...

    w3c标准 html标准验证 xhtml标准验证 css标准验证

    3. 链接目标属性(target="_blank"):在XHTML 1.0中,不应使用`target="_blank"`来强制在新窗口中打开链接,而是应该使用`rel="external"`属性,并配合JavaScript实现,如下所示: ```html 打开一个新窗口 ``` ...

    a标签是否新开一个页面的问题各大网站的打开情况整理

    - target="_self":在当前页面窗口打开链接,即不会新开页面。 - target="_blank":在新的页面或标签页中打开链接。 首先,百度百科的做法比较灵活。如果链接的header(可能是指页面的头部内容,如导航栏)与当前...

    javascript fullscreen全屏实现代码

    另外,对于现代浏览器,更推荐使用`Fullscreen API`,它提供了更安全、可控且符合标准的全屏方法。`Fullscreen API`允许元素(如`&lt;video&gt;`或`&lt;div&gt;`)进入全屏模式,使用`element.requestFullScreen()`方法,退出...

    将内容中的符合url格式的字符串转换为超链接(JAVA版)

    一旦找到匹配的URL,我们就用超链接的形式替换它,其中`&lt;a&gt;`标签用于创建超链接,`target='_blank'`属性表示链接将在新窗口中打开。 现在,你可以像这样使用这个方法: ```java public static void main(String[] ...

    2022年职称计算机考试Dreamever模拟题(十三) 1.docx

    选项A `_blank` 表示在新窗口或新标签页中打开,符合题目中"在新窗口打开网页"的要求。 2. **页面属性与TracingImage**: - TracingImage是Dreamweaver中的一个辅助功能,用于网页排版时图像的精确对位。它在设计...

    HTML+CSS+Div测试习题.pdf

    此外,网页的链接可以使用 `target` 属性来指定在何处打开,如 `_blank` 打开新窗口,`_self` 在当前窗口打开,`_top` 填充整个浏览器窗口,而 `_parent` 在父框架中打开。链接的 `href` 属性可以指向 URL 或页面...

    html5理解head_动力节点Java学院整理

    例如,`&lt;base href="http://titan/listings/" target="_blank"&gt;` 设置了基准URL,并规定所有链接将在新窗口中打开。 最后,元素用于在中内联定义CSS样式,虽然为了性能优化,通常建议将样式表放在外部文件中,但...

    网页制作选择填空复习题集-含答案解析.doc

    9. **新窗口打开链接**:使用`target="_blank"`属性可以使得链接在新窗口中打开。 10. **CSS布局**:CSS常利用`div`元素来构建网页布局,通过设置样式实现定位和尺寸控制。 11. **边框语法**:在CSS中,`border-...

    CSS设计符合Web标准的网页表单的几个技巧

    在网页设计中,创建符合Web标准的表单是至关重要的,因为它们不仅影响用户体验,还直接关乎网站的可用性和易用性。以下是一些使用CSS和HTML技巧来优化网页表单设计的关键点: 1. **表单文本输入的移动选择**: 当...

    php课后习题及答案php

    - **知识点**: 使用 target 属性可以控制链接打开的方式,target="_blank" 表示在新窗口或新标签页中打开链接。 - **选项分析**: - A. herf=”_blank”:herf 错误,应该是 href。 - B. name=”_blank”:name ...

    html+css考试题.docx

    - **解析**:`target="_blank"` 是HTML中用于指定链接目标的一个属性值,表示在新窗口或新的标签页中打开链接。 ### 其他知识点扩展 除了上述选择题解析外,还涉及到一些其他的重要知识点: - **CSS样式表**:...

    用javascript来控制 链接的target 属性的代码

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

    视频跳转制作

    这个函数接受一个URL字符串和一个目标参数,目标参数可以设置为`_blank`(在新窗口打开)、`_self`(在当前窗口或帧打开)、`_parent`(在父级框架打开)或`_top`(在整个浏览器窗口打开)。 4. **导出SWF文件**:...

    HTML基本语言代码 

    `target`属性可指定链接打开的方式,如`_blank`表示在新窗口中打开。 ```html 目标网址" target="_blank"&gt;链接文字 ``` ### 6. 表格:`&lt;table&gt;` 标签 `&lt;table&gt;`标签用于创建表格,通过`&lt;tr&gt;`(行)、`&lt;td&gt;`...

    html网页的代码大全.pdf

    - `&lt;a target="_blank"&gt;`:在新窗口中打开链接。 - `window.open()`:JavaScript函数,用于打开新窗口。 4. 样式和脚本 - `&lt;style&gt;`:定义CSS样式。 - `&lt;script&gt;`:嵌入或引用JavaScript代码。 5. 窗口和框架 ...

Global site tag (gtag.js) - Google Analytics