关闭

_blank开新窗口不符合标准?

标签: javascriptxhtmlhtmlfunctionc
989人阅读 评论(0) 收藏 举报
本文参考了以下文章:

我们要在新窗口中打开链接通常的做法是在链接后面加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"。 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

_blank开新窗口不符合标准?

我们要在新窗口中打开链接通常的做法是在链接后面加target="_blank",我们采用过渡型的DOCTYPE(xh tml1-transitional. dtd)时没有问题,但是当我们使用严格的DO...
  • sibang
  • sibang
  • 2014-08-21 16:41
  • 637

如何让webBrowser中的超链接不会在新窗口中打开?

如何让webBrowser中的超链接不会在新窗口中打开?(c#)  Visual Studio Development  >  Visual C# 问题...
  • yinbucheng
  • yinbucheng
  • 2017-03-21 22:07
  • 277

ajax请求成功后打开新窗口地址

转自:http://www.cnblogs.com/linjiqin/p/3148205.html jQuery.ajax({       "type":"post",  &#...
  • shanliangliuxing
  • shanliangliuxing
  • 2014-06-10 09:59
  • 3017

stb linux 系统参数调整

转自:http://blog.csdn.net/yangzhiloveyou/article/details/9076577 控制台打印级别: echo 1 4 1 7 > /proc/s...
  • haima1998
  • haima1998
  • 2014-10-28 22:09
  • 623

a标签中target设置为blank和_blank有什么区别?

a标签中target设置为blank和_blank有什么区别? 原创 2010年04月06日 00:30:00 标签:iframe /测试 /c 11805 ...
  • evilcry2012
  • evilcry2012
  • 2017-11-01 15:51
  • 130

X.509标准简介

X.509标准简介
  • starboybenben
  • starboybenben
  • 2015-09-06 15:27
  • 2107

如何统一设置a标签默认超链接点击进入新窗口

a标签的target属性:语法属性值 值 描述 _blank 在新窗口中打开被链接文档。 _self 默认。在相同的框架中打开被链接文档。 _parent 在父框架集中打...
  • microcosmv
  • microcosmv
  • 2016-10-04 01:17
  • 2073

[举重若轻]ajax打开新窗口实现

最近开发中碰到一个问题,有一场景需要在ajax验证通过后在新窗口打开一个url。一开始通过在异步回调函数中使用window.open()来实现,但是发现这种实现方式会被浏览器拦截,需要用户进行浏览器设...
  • yanhandle
  • yanhandle
  • 2013-01-10 14:47
  • 13675

js window.open打开新窗口 参数

1、基本描述 1.1 方法签名:oNewWindow = window.open( sURL , sName , sFeatures, bReplace) 通过方法签名可以看出,window....
  • hj7jay
  • hj7jay
  • 2016-04-26 09:47
  • 4227

selenium打开新窗口以及窗口切换

package com.wiley.windows; import java.util.Set; import org.junit.AfterClass; import org.junit.Bef...
  • fgwvip123
  • fgwvip123
  • 2016-06-15 17:47
  • 8537
    个人资料
    • 访问:11847690次
    • 积分:65373
    • 等级:
    • 排名:第40名
    • 原创:675篇
    • 转载:2277篇
    • 译文:0篇
    • 评论:554条
    文章分类
    文章存档
    最新评论
    计算流量