一段非常简单的js判断浏览器的内核


Posted in Javascript onAugust 17, 2014

大家应该还记得JavaScript行内样式怎么写吧?(看来我是废话了!)

在前端开发过程中,有时我们需要判断浏览器的内核前缀,对不同的浏览器做出不同的处理,因此我们可以这么做。

alert(element.style.webkitTransition); 这个是获取以webkit为前缀的transition值。但如果不是webkit为前缀的浏览器,则会返回undefined。而我们可以将所有的内核前缀给枚举出来,然后获取其某个CSS的值,即可做出判断。代码如下:

function getVendorPrefix() {
  // 使用body是为了避免在还需要传入元素
  var body = document.body || document.documentElement,
    style = body.style,
    vendor = ['webkit', 'khtml', 'moz', 'ms', 'o'],
    i = 0;

  while (i < vendor.length) {
    // 此处进行判断是否有对应的内核前缀
    if (typeof style[vendor[i] + 'Transition'] === 'string') {
      return vendor[i];
    }
    i++;
  }
}

然后只需要调用getVendorPrefix()即可知道浏览器的内核前缀,如果返回undefined则证明浏览器不支持CSS3属性,即没有内核前缀。

大家应该知道,我们在写代码的过程中,能写CSS就不写JavaScritp,毕竟CSS的性能会比自己写JS的高一些,因此,我们在开发一些实际应该中,会用到transition,比如一个简单的图片轮播,我们可以使用CSS3的transition,也可以使用jQuery的animate或自己写原生,但CSS3的性能肯定会高一些,因此我们可以写两套代码,对于支持CSS3的浏览器则使用animation,而不支持的则使用计时器或animate。这样的话能够获取更好的用户体验。

以上是看jquery.slides.js的插件心得,如有更好的方法,请一定告知笔者。

Javascript 相关文章推荐
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
javascript折半查找详解
Jan 26 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
js中window.open的参数及注意注意事项
Jul 06 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
Postman的下载及安装教程详解
Oct 16 Javascript
Vue.js的动态组件模板的实现
Nov 26 Javascript
解决ele ui 表格表头太长问题的实现
Nov 13 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
Aug 16 #Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
Aug 16 #Javascript
Node.js安装教程和NPM包管理器使用详解
Aug 16 #Javascript
Node.js中的事件驱动编程详解
Aug 16 #Javascript
Node.js文件操作详解
Aug 16 #Javascript
Node.js中使用Buffer编码、解码二进制数据详解
Aug 16 #Javascript
Node.js中创建和管理外部进程详解
Aug 16 #Javascript
You might like
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python实现Const详解
2015/01/27 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
利用python实现逐步回归
2020/02/24 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
四年级下册教学反思
2014/02/01 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
立春观后感
2015/06/18 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏