一段非常简单的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获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
Aug 20 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
js和C# 时间日期格式转换的简单实例
May 28 Javascript
AngularJS入门教程之ng-checked 指令详解
Aug 01 Javascript
Javascript之面向对象--方法
Dec 02 Javascript
BootStrap表单宽度设置方法
Mar 10 Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 Javascript
解决在vue项目中webpack打包后字体不生效的问题
Sep 01 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python实现俄罗斯方块游戏
2020/03/25 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
C++面试题目
2013/06/25 面试题
毕业学生推荐信
2013/12/01 职场文书
小学美术教学反思
2014/02/01 职场文书
村创先争优活动总结
2014/08/28 职场文书
敬老月活动总结
2014/08/28 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
2014年创卫工作总结
2014/11/24 职场文书
高中团支书竞选稿
2015/11/21 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js