一段非常简单的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 相关文章推荐
JS解密入门 最终变量劫持
Jun 25 Javascript
js对象的比较
Feb 26 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 Javascript
扩展JS Date对象时间格式化功能的小例子
Dec 02 Javascript
JavaScript常用脚本汇总(三)
Mar 04 Javascript
js倒计时简单实现代码
Aug 11 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
Angular4 中常用的指令入门总结
Jun 12 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
vue中实现图片压缩 file文件的方法
May 28 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
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
python中的列表推导浅析
2014/04/26 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
幼儿园安全检查制度
2014/01/30 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
本科生自荐信
2014/06/18 职场文书
教师暑期培训感言
2014/08/15 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
经理聘任证明
2015/03/02 职场文书
病假条格式范文
2015/08/17 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers