一段非常简单的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 XML实现两级级联下拉列表
Nov 10 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
js简单设置与使用cookie的方法
Jan 22 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
JS解决iframe之间通信和自适应高度的问题
Aug 24 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
vue获取dom元素注意事项
Dec 28 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
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利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
python语音识别实践之百度语音API
2018/08/30 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
python是怎么被发明的
2020/06/15 Python
html5时钟实现代码
2010/10/22 HTML / CSS
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
个人求职信范文分享
2013/12/13 职场文书
学校四风对照检查材料
2014/08/28 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python
PHP设计模式(观察者模式)
2021/07/07 PHP
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android