解决JS脚本兼容的几个小技巧

标签: js 脚本 技巧 | 发表时间:2012-04-29 08:40 | 作者:执着那份情
出处:http://www.blogjava.net/
1.使用HTML注释掉脚本

关于兼容性我们第一个要考虑的问题应该是运行的平台是否支持客户端脚本?通常的做法是将脚本主体包括在一条HTML注释中:
<script language="JavaScript">
<!--
document.write(new Date());
//-->
</script>

这样不支持脚本的浏览器会忽略<script>和</script>标签并把其他代码当作一条HTML注释处理,而支持脚本的浏览器则把"<!--"这句当作一条HTML注释语句,其他语句正常执行,HTML注释结尾"-->"用"//"进行单行注释。

2.特性、平台检测

当我们要使用的特性和平台有关时,就得先进行检测再使用,检测的方式有两种:一种是直接检测平台是否支持该特性,另一种是检测平台类型再使用相应的特性。代码如下:
<script language="Javascript">
<!--
//a.检测是否支持特性
if(s.split){
    a = s.split(","); //支持,直接使用
}else{
    a = s.mysplit(","); //不支持,使用替代方法
}
//b.平台检测
if(navigator.appName.indexOf("Microsoft") != -1){
    //使用IE支持的特性
}
//-->
</script>

3.替代?忽略?停止?

对于存在兼容性的地方,解决方法是针对不同的平台使用不同的特性或是用替代方法实现,这是上策;但总有一些时候我们用上述方法无法解决时,我们可以看下这个问题是否严重,如果不严重,那我们就可以忽略它,比如一个特性在Netscape2上无效,但现在基本上没人使用Netscape2了,那我们就忽略它;如果无法解决但问题又比较严重,那我们就应停止脚本的运行,并明确告诉用户发生的问题!


执着那份情 2012-04-29 08:40 发表评论

相关 [js 脚本 技巧] 推荐:

解决JS脚本兼容的几个小技巧

- - BlogJava-首页技术区
1.使用HTML注释掉脚本. 关于兼容性我们第一个要考虑的问题应该是运行的平台是否支持客户端脚本. 通常的做法是将脚本主体包括在一条HTML注释中:. 这样不支持脚本的浏览器会忽略标签并把其他代码当作一条HTML注释处理,而支持脚本的浏览器则把""用"//"进行单行注释.

冷门JS技巧 - think_fish

- - 博客园_首页
像 console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个 帖子,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来. 现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容.

(总结)简体繁体转换JS(JavaScript)脚本

- - 服务器运维与网站架构|Linux运维|X研究
PS:前些时间有童鞋问我怎么把繁体网站自动辨认浏览器来切换成简体. 这个其实很简单,我在07年的时候的公司运营的香港讨论区就用过,只需加个JS脚本,再加几行html代码嵌入就OK. 现重新记录一下,有两个版本测试可用. 1、首先把下面这个链接放在提醒用户繁简转换的地方:. 繁体中文.

WiFi流量劫持—— JS脚本缓存投毒 - EtherDream

- - 博客园_EtherDream の 原创空间
  在上一篇《 WiFi流量劫持—— 浏览任意页面即可中毒》构思了一个时光机原型,让我们的脚本通过HTTP缓存机制,在未来的某个时刻被执行,因此我们可以实现超大范围的入侵了.   基于此原理,我们用NodeJS来实现一个简单的样例. 得益于node强大的IO管理,以及各种封装好的网络模块,我们可以很容易实现这个想法:.

转:五段实用的js淫荡技巧

- - 膘叔
其实不能算是什么特别的东西,但有些小技巧还是可以试试的,比如说第一个,我们一般都会是用setInterval,然后每1秒执行一次,10秒后取消,但setTimeout也可以. 原文来自:http://www.cnblogs.com/nothingbrother/archive/2011/12/19/2293131.html.

WebView JS 交互

- - ITeye博客
WebView加jquery做页面会怎么样呢. // 创建WebView对象. // 把programList添加到js的全局对象window中,. // 这样就可以使用window.programList来获取数据. * 定义js回调java函数. // 绑定键盘的向上,向下按钮事件触发相应的js事件.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

來源請求.js

- 红烧鲤鱼 - Blog: timdream
很早以前就想講了,但講了大概又會被戰. 相較於英文維基百科,中文維基百科在社會和歷史條目充滿了 systemic bias. 但是那些主觀論述又不是編輯者有意加進去的,而是某種編輯者存在的社會所給予的暗示(Inception?)與集體共識,而不是原本百科全書應該有的可驗證的事實. 因為是暗示又是共識,所以有自覺的百科編輯者反而是少數;中文維基只好長成現在這個樣子了.

Js删除节点

- - JavaScript - Web前端 - ITeye博客
 方式一:传this参数调用方法:.  方式二:js方法中通过选择器获取节点:. //此处删除的是a节点 }. 方式三:通过jQuery方式获取节点:(尚未测试,有待测试. 此处a标签传this到js中,js通过this(即a节点)取parent(即p节点). (1)p.remove();可直接删除整个p节点.

JS游戏引擎列表

- sku - 酷壳 - CoolShell.cn
这里有一个网址收集了关于JS游戏引擎开发库的一个列表,转过来. 关于使用JS和HTML5做的一些小游戏,可参见《HTML5 小游戏展示》. Name Latest Release License Type Notes The Render Engine 1.5.3 MIT 跨浏览器; 大规模 API; 开源. 2 gameQuery 0.5.1 CC BY-SA 2.5 和 jQuery 一起使用 gTile 0.0.1 Tile based.