一段非常简单的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 相关文章推荐
精通Javascript系列之数值计算
Jun 07 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
vue、react等单页面项目应该这样子部署到服务器
Jan 03 Javascript
详解VUE单页应用骨架屏方案
Jan 17 Javascript
一文搞懂ES6中的Map和Set
May 20 Javascript
小程序api实现promise封装过程解析
Nov 21 Javascript
微信小程序实现轨迹回放的示例代码
Dec 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
一些PHP写的小东西
2006/12/06 PHP
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
PHP7新增函数
2021/03/09 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
swiper4实现移动端导航切换
2020/10/16 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
微信小程序文章列表功能完整实例
2020/06/03 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python中%r和%s的详解及区别
2017/03/16 Python
简单实现python聊天程序
2018/04/01 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python对XML文件的操作实现代码
2020/03/27 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
MYSQL基础面试题
2012/05/13 面试题
职业生涯规划书的格式
2013/12/29 职场文书
运动会稿件50字
2014/02/17 职场文书
教师年度考核评语
2014/04/28 职场文书
企业职业病防治方案
2014/05/29 职场文书
幼师大班个人总结
2015/02/13 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android