荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: wwcbug (吞掉也没有关系吧), 信区: Homepage
标  题: DHTML+CSS设计中关于新窗口打开_blank的处理zz
发信站: 荔园晨风BBS站 (Mon Dec 11 17:42:43 2006), 站内

本文参考了以下文章:

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>
就是这样。

补:

我在网站搜索,参考其他网站的代码,还有这么一种解决办法:

#newwindow a:hover { text : expression(target="_blank"); }

如上,在CSS中加上这么一条就可以了,在需要的地方调用,我站就是使用这种方法做的。
--
佩服佩服,我说巴黎市市长妻子的女儿从他房间的高楼大厦上把自己的头发喀嚓一声然
后架着父皇的腮发让着心爱的人的楼下,那就是那做伦敦山脉那悠悠小劲上…  谢谢你
的爱。伦敦校长这样的怀上你的孩子…

                                  ——  向我们伟大的人文主义学家alingaaa敬礼


※ 修改:·wwcbug 于 Dec 11 17:42:47 修改本文·[FROM: 192.168.20.228]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.20.228]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店