js 不用重复检测浏览器提高效率
// 方式1
function addEvent(el, type, fn){
if(el.addEventListener){
el.addEventListener(type, fn, false);
}else{
el.attachEvent('on'+type, fn)
}
}
// 方式2
var addEvent = document.addEventListener ?
function(el, type, fn) {el.addEventListener(type, fn, false);} :
function(el, type, fn) {el.attachEvent('on'+type, fn)};
方式1在函数内做判断,每次给元素添加事件都需判断一次,效率相对低一些。
jQuery 1.6.1/Prototype 1.7/Mootools 1.3/tangram 1.3.6/reg.js/right.js都是采用这种分支方式。
方式2使用了两个匿名函数,仅在初始化时判断一次,后每次调用无须判断。效率相对高一些。
Ext/kissy/qwrap 采用这种分支写法。
相关推荐
-
js 不用重复检测浏览器提高效率
这里以拿 添加事件示例 复制代码 代码如下: // 方式1 function addEvent(el, type, fn){ if(el.addEventListener){ el.addEventListener(type, fn, false); }else{ el.attachEvent('on'+type, fn) } } // 方式2 var addEvent = document.addEventListener ? function(el, type, fn) {el.addEve
-
用js实现的检测浏览器和系统的函数
复制代码 代码如下: var sUserAgent = navigator.userAgent; var fAppVersion = parseFloat(navigator.appVersion); function compareVersions(sVersion1, sVersion2) { var aVersion1 = sVersion1.split("."); var aVersion2 = sVersion2.split("."); if (aVers
-
使用js检测浏览器的实现代码
在写跨浏览器的js程序中,检测浏览器是一个很重要的工作.我们不时要为不同的浏览器写分支代码.如下是一种: 复制代码 代码如下: //添加事件工具函数function addEvent(el,type,handle){ if(el.addEventListener){//for standard browses el.addEventListener(type,handle,false); }else if(el.attachEvent){//for IE
-
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
检测浏览器的方式 1.对象特征检测法:判断浏览器能力的通用方法.如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法.常见的原生Ajax写法中就用这种方法来创建XMLHttpRequest: 复制代码 代码如下: IXHR: function(){ if(window.ActiveXObject){ XHR=new ActiveXObject('Microsoft.XMLHTTP'); }else if(window.XMLHttpRequest){ XHR=new XMLHttp
-
js检测浏览器版本、核心、是否移动端示例
检测浏览器版本.核心.系统和是否移动端 复制代码 代码如下: /** * check browser version * @authors K * @date 2014-04-11 14:48:39 * @version 1 */ /** * detect browser info with navigator userAgent * @return object browser info */ var browser = (function(){ var userAgent = nav
-
javascript 包裹节点 提高效率
原理基本是这样,如果传入的是字符串,那么让它们变成一个元素节点,不过这元素节点也可以有许多层,在最内层把要包裹的元素放进.把字符串变成元素节点的方法有如下几个.1,createElement,IE可以连元素属性也一起创建,但只能创建一层.2,innerHTML,不过需要对原来的字符串进行处理,IE与FF都有许多意想不到的默认行为,可以为你多加一点东西或少加一点东西.3,createContextualFragment,由于Opera的行为有点怪异,需要选中修改元素的位置.经日本人的测试,它转换字
-
javascript 检测浏览器类型和版本的代码
检测浏览器及其版本的代码 复制代码 代码如下: getBrowser : function(){ var browser = { msie: false, firefox: false, opera: false, safari: false, chrome: false, netscape: false, appname: 'unknown', version: 0 }, userAgent = window.navigator.userAgent.toLowerCase(); if ( /(
-
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userAgent里是没有MSIE标志的,原因就是这个了. 把判断IE浏览器的方法改成如下就可以了. function isIE() { //ie? if (!!window.ActiveXObject || "ActiveXObject" in window) return true; else return false
-
MySQL中Stmt 预处理提高效率问题的小研究
复制代码 代码如下: DELIMITER $$ set @stmt = 'select userid,username from myuser where userid between ? and ?'; prepare s1 from @stmt; set @s1 = 2; set @s2 = 100; execute s1 using @s1,@s2; deallocate prepare s1; $$ DELIMITER ; 用这种形式写的查询,可以随意替换参数,给出代码的人称之为预处理,
-
JavaScript快速检测浏览器对CSS3特性的支持情况
在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持"transform",然后我的布局会有两种完全不同的版式. 当然除开本文介绍的这种快速方法,还有一种更有名和更通用的方法,那就是modernizr,运行脚本之后它会在html的class上加上浏览器支持的所有特性的列表. 优点: js是可配置的,不需要的特性检测可以在配置脚本中去掉基于特性检测js库简单好用 除此之外还有一种不太好的方法,那就是判断浏览器的UA,不好的原因是UA可能会伪造,而且版本判断繁琐,还有不稳定.
随机推荐
- 详解IE6中的position:fixed问题与随滚动条滚动的效果
- jquery的ajax异步请求接收返回json数据实例
- Redis String 类型和 Hash 类型学习笔记与总结
- 深入解析Python中的list列表及其切片和迭代操作
- silverlight2.0Beta版TextBox输入中文解决方法
- 基于Asp.net与Javascript控制的日期控件
- Ajax上传实现根据服务器端返回数据进行js处理的方法
- php+html5基于websocket实现聊天室的方法
- 比较彻底的解决方法无法显示隐藏文件夹"修改过注册表也无效"的解决方法
- 详解Ruby中的异常
- 深入解析C++中的动态类型转换与静态类型转换运算符
- Android开发之基于DialogFragment创建对话框的方法示例
- 如何使用php实现评委评分器
- BootStrap表单控件之文本域textarea
- C#字符串的常用操作工具类代码分享
- android UI进阶之android中隐藏的layout 抽屉的使用方法
- python3获取当前文件的上一级目录实例
- 微信小程序仿RadioGroup改变样式的处理方案
- django中使用事务及接入支付宝支付功能
- vue实现pdf导出解决生成canvas模糊等问题(推荐)