百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[编程交流] 更灵活简洁的新窗口打开方式(有更新,望注意) [复制链接]
查看:24183 | 回复:77

1

主题

157

帖子

237

积分

落伍者(一心一意)

蒙面操人

Rank: 1

贡献
159
鲜花
4
注册时间
2007-11-29
发表于 2009-8-18 16:30:19 | |阅读模式 来自 中国广东阳江
本帖最后由 qq7273771 于 2009-8-30 13:14 编辑

本文有更改,请读者注意!

老方法:(原文在非IE浏览器中无效,故研究出新方法,在最底部):

老方法原文开始:-------------------------------------------------------------------------------------------------------------------------------
最早知道的可通过验证的新窗口打开方法是阿捷的这篇文章http://www.w3cn.org/article/tips/2005/107.html
利用JS去实现,但是这种方法有一个坏处,有时候会使得这段JS与其它和JS冲突!
于是,我找到了另外一种纯CSS的打开新窗口的办法
http://www.lanrentuku.com/js/css-191.html
可是这种方法却通不过验证,那么只好加点手段了!
先将这段CSS代码转换为JS代码
http://tool.chinaz.com/Tools/Html_Js.aspx
得出代码如下:

//blank新窗口
document.writeln("<style type=\"text/css\">");
document.writeln("<!-- ");
document.writeln(".blank a{test:expression(target=\"_blank\");}");
document.writeln("}");
document.writeln("-->");
document.writeln("</style>");

由于一般网页都会有调用JS的代码,所以上面这段代码你只需要插入网站里主要的JS即可!再在HTML中的head区用JS调用这段CSS:
<script type="text/javascript" src="skin/default/js/js.js"></script>
最后在你需要打开新窗口的地方加入:
class="blank"即可!
如:
<div id="footer" class="blank">
------------------------------------------------------------------------------------------------------
回复13楼的问题:“能说说好处吗

这里是我鲁莽了,没有写清楚这篇文章的最大好处,上面只是以通过验证的方法去介绍,其实这种方法最大的好处是大量精简代码

如果按照当初阿捷那篇文章的方法所做的话,不但有时候会跟其它JS效果产生冲突引致失效
并且也会产生很多多余的代码!我举个例子显示我这种方法简洁性!

传统方法是每一个打开新窗口的链接都需要加一句"traget="_blank",也就是说每个超链接都需要是
"<a href="
http://www.yourhome.com" traget="_black">超链接</a>",
这样就不会断产生大量的多余的"traget="_blank"了!

而阿捷的文章也差不多,产生大量的"rel="external"

但我这种方法却能省掉这些多余的代码!
示例:

当我希望网站底部所有的超链接都是以新窗口的方式去打开的(因为通常网站底部都是放友情链接或者一些其它需要以新窗口去打开的超链接)!那么我只要这样就行了:
<div id="footer" class="blank">
<a href=“
http://www.yourhome.com>所有超链接一</a>
<a href=”
http://www.yourhome.com>所有超链接二</a>
<a href=“
http://www.yourhome.com>所有超链接三</a>
</div>



<div class="footer blank">
<a href=“
http://www.yourhome.com>所有超链接一</a>
<a href=”
http://www.yourhome.com>所有超链接二</a>
<a href=“
http://www.yourhome.com>所有超链接三</a>
</div>


您看,这是否很方便很简洁呢?只需要在包含你希望以新窗口打开的地方加上这么一句"class="blank",那么整个class所有的超链接都是以新窗口的方式打开的!
老方法原文结束:-------------------------------------------------------------------------------------------------------------------------------




新方法开始:------------------------------------------------------------------------------------------------------------------------------------

优点:
1、可通过W3C严格校验
2、调用更灵活(只需要在以新窗口打开的区域加入一句class="blank")
3、代码更简洁(不需要在每一句A标签里加traget="_blank“或rel="external")


PS:Internet Explorer6、Internet Explorer7、Firefox3、Opera9四种浏览器测试有效
(Opera浏览器必须修改浏览器首选项,方法:“工具”——“首选项”——“弹出窗口”——不选择“屏蔽全部弹出窗口”即可)

HTML部分:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn">
  3. <head>
  4. <title>新窗口打开方式(可通过校验,灵活调用,代码简洁)</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  6. </head>
  7. <body>
  8. <div class="blank">
  9.   <a href=" http://www.baidu.com" >百度</a><br />
  10.   <a href=" http://www.google.cn" >谷歌</a><br />
  11.   <a href=" http://www.cssrain.cn" >前端技术(JS部分由前端技术站长cssrain提供,俺不会JS)</a><br />
  12.   <a href=" http://www.idealboy.cn" >理想男孩(没空整)</a>
  13. </div>
  14. <script type="text/javascript" src="blank.js"></script>
  15. </body>
  16. </html>
复制代码
JS部分:

  1. function ByClassName(oElm, strTagName, strClassName){
  2. var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
  3. var arrReturnElements = new Array();
  4. strClassName = strClassName.replace(/-/g, "\-";
  5. var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)";
  6. var oElement;
  7. for(var i=0; i<arrElements.length; i++){
  8. oElement = arrElements;
  9. if(oRegExp.test(oElement.className)){
  10. arrReturnElements.push(oElement);
  11.    }
  12. }
  13. return (arrReturnElements);
  14. }
  15. var blanks = ByClassName(document, "*", "blank";
  16. for (var i=0;i<blanks.length;i++ ){  
  17. var urls = blanks.getElementsByTagName("a";
  18. for (var j=0;j<urls.length;j++ ){
  19.   urls[j].target="_blank";   
  20. }
  21. }
复制代码
新方法结束:------------------------------------------------------------------------------------------------------------------------------------

IdealBoy
qq:7273771
转载恳请保留出处




评分

参与人数 2鲜花 +2 收起 理由
我爱落.伍BBS + 1
拒绝游泳的鱼 + 1

查看全部评分

那天鱼掉进了河里,悲伤地对我说:"你看不见我的眼泪,因为我身在水中!"
我反驳:"我能感觉你在流泪,因为听说你拒绝游泳"
百度蜘蛛往这来--------敌敌畏,黑旋风,雷达,鹤顶红,含笑半步钉...!!!

56

主题

5065

帖子

5720

积分

落伍者(三羊开泰)

江湖浪子

Rank: 3Rank: 3

贡献
8841
鲜花
19
注册时间
2004-12-10
发表于 2009-8-18 17:57:15 | 来自 中国广西钦州
技术文章一定要顶,这是我的原则~~
头像被屏蔽

1

主题

1万

帖子

9397

积分

禁访

贡献
2373
鲜花
29
注册时间
2009-6-28
发表于 2009-8-18 18:19:25 | 来自 中国广东潮州
收藏了,谢谢。
签名被屏蔽
头像被屏蔽

3

主题

648

帖子

2520

积分

落伍者(两全齐美)

Rank: 2

贡献
1742
鲜花
0
注册时间
2002-4-11

落伍手机绑定

发表于 2009-8-18 18:26:40 | 来自 中国湖北武汉
测试下。

34

主题

4万

帖子

3万

积分

落伍者(四季发财)

更新人员群:831643

Rank: 4

贡献
7609
鲜花
37
注册时间
2005-12-3

QQ绑定

发表于 2009-8-18 18:29:31 | 来自 中国广东广州
支持共享。

435

主题

6160

帖子

4527

积分

落伍者(两全齐美)

广州数据中心老杨

Rank: 2

贡献
2910
鲜花
13
注册时间
2006-5-28

落伍手机绑定

发表于 2009-8-18 21:12:05 | 来自 中国广东广州
不错不错
头像被屏蔽

67

主题

466

帖子

1769

积分

落伍者(两全齐美)

Rank: 2

贡献
1542
鲜花
2
注册时间
2002-9-24
发表于 2009-8-18 22:43:10 | 来自 中国浙江杭州
技术文章一定要顶
签名被屏蔽

1

主题

157

帖子

237

积分

落伍者(一心一意)

蒙面操人

Rank: 1

贡献
159
鲜花
4
注册时间
2007-11-29
 楼主| 发表于 2009-8-18 23:55:11 | 来自 中国广东阳江
强调一下,这是我原创的,目前来说,在互联网应该只有我一个人用这种方法来打开新窗口!
在落伍首发!
那天鱼掉进了河里,悲伤地对我说:"你看不见我的眼泪,因为我身在水中!"
我反驳:"我能感觉你在流泪,因为听说你拒绝游泳"
百度蜘蛛往这来--------敌敌畏,黑旋风,雷达,鹤顶红,含笑半步钉...!!!

3533

主题

5万

帖子

2万

积分

落伍者(四季发财)

Rank: 4

贡献
3334
鲜花
496
注册时间
2005-9-11

落伍手机绑定

发表于 2009-8-19 00:27:57 | 来自 中国广东佛山
技术贴要学习。
头像被屏蔽

1472

主题

1万

帖子

1万

积分

落伍者(四季发财)

特约通讯员

Rank: 4

贡献
4286
鲜花
18
注册时间
2005-1-13

落伍手机绑定

发表于 2009-8-19 01:25:44 | 来自 中国广东潮州
收藏了,谢谢。
签名被屏蔽
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-5-23 06:31 , Processed in 0.172998 second(s), 36 queries , Gzip On.

返回顶部