`
zhangyaochun
  • 浏览: 2622176 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

zepto的detect探究

阅读更多

 

   其实

 

   zepto有自身的函数接口去判断设备浏览器

 

   我拿iOS模拟器跑测试:

 

//Zepto.os 查看设备
Zepto.os返回一个对象:

{
   ios:true,
   iphone:true,
   version:"6.1"
}


//Zepto.browser 查看浏览器
Zepto.browser返回一个对象:

{
   version:"536.26"
   webkit:true
}

 

 

 

   源码来自:detect.js

 

;(function($){
  
  //创建一个detect函数,参数为ua
  function detect(ua){

    //this为Zepto,给它绑两个属性:一个os,一个browser
    var os = this.os = {}, 
        browser = this.browser = {},

      webkit = ua.match(/WebKit\/([\d.]+)/),

      android = ua.match(/(Android)\s+([\d.]+)/),

      ipad = ua.match(/(iPad).*OS\s([\d_]+)/),

      iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/),

      webos = ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),


      touchpad = webos && ua.match(/TouchPad/),

      kindle = ua.match(/Kindle\/([\d.]+)/),

      silk = ua.match(/Silk\/([\d._]+)/),

      blackberry = ua.match(/(BlackBerry).*Version\/([\d.]+)/),

      bb10 = ua.match(/(BB10).*Version\/([\d.]+)/),

      rimtabletos = ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/),

      playbook = ua.match(/PlayBook/),

      chrome = ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/),

      //比如火狐19,这边firefox是一个数组:["Firefox/19.0","19.0"];
      firefox = ua.match(/Firefox\/([\d.]+)/)

    // Todo: clean this up with a better OS/browser seperation:
    // - discern (more) between multiple browsers on android
    // - decide if kindle fire in silk mode is android or not
    // - Firefox on Android doesn't specify the Android version
    // - possibly devide in os, device and browser hashes

    if (browser.webkit = !!webkit) browser.version = webkit[1]

    if (android) os.android = true, os.version = android[2]

    if (iphone) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.')

    if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.')

    if (webos) os.webos = true, os.version = webos[2]

    if (touchpad) os.touchpad = true

    if (blackberry) os.blackberry = true, os.version = blackberry[2]

    if (bb10) os.bb10 = true, os.version = bb10[2]

    if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2]

    if (playbook) browser.playbook = true

    if (kindle) os.kindle = true, os.version = kindle[1]

    if (silk) browser.silk = true, browser.version = silk[1]

    if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true

    //如果chrome有值的话,给browser装两个属性firefix和version
    if (chrome) browser.chrome = true, browser.version = chrome[1]

    //如果firefox有值的话,给browser装两个属性firefix和version
    if (firefox) browser.firefox = true, browser.version = firefox[1]

    //os必有一个属性tablet来标示是否是平板
    os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) || (firefox && ua.match(/Tablet/)))

    //os必有一个属性phone来标示是否是手机,但是有问题:如果是pc的火狐,返回的居然也是true(当然它本身针对移动端的,呵呵,忽略忽略)
    os.phone  = !!(!os.tablet && (android || iphone || webos || blackberry || bb10 || chrome || firefox))
  }

 
  //调用detect方法,把navigator.userAgent当参数传入
  detect.call($, navigator.userAgent);


  // make available to unit tests
  //给Zepto绑上一个key为__detect对应的是detect这个function
  $.__detect = detect

})(Zepto)

 

分享到:
评论

相关推荐

    jquery validation 支持zepto

    让jquery validation plugin 支持zepto

    zepto.js的中文手册,中文api说明,zepto中文注释

    ### Zepto.js中文手册知识点详解 #### 一、概述 Zepto.js是一个轻量级的JavaScript库,旨在为移动Web开发提供与jQuery类似的API。它体积小、性能高且易于使用,非常适合移动设备上的Web应用开发。Zepto.js支持大...

    zepto库中touch.js

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api。 如果你会用jquery,那么你也会用zepto。touch库实现'swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'doubleTap',...

    Zepto集成touch版本

    标题提到的"Zepto集成touch版本"指的是 Zepto 的一个扩展,专门针对触摸事件和手势处理进行了优化,使其更适合在触屏设备如智能手机和平板电脑上使用。这个集成版本包含了更多的功能,比官方提供的基础7个组件更加...

    mobiscroll.zepto.zip

    《 Mobiscroll 与 Zepto 的日期选择器集成详解》 在移动开发中,提供一个易用、高效的日期选择器是至关重要的。Mobiscroll 是一款知名的触摸优化的滚动库,特别适合在移动设备上创建日历、时钟和滑动选择器。而 ...

    zepto包含touch模块

    zepto.js是一个轻量级的JavaScript库,专为移动设备的Web开发设计,尤其是针对触摸屏设备。它提供了类似于jQuery的API,使开发者能够轻松地处理DOM操作、事件处理、动画效果以及Ajax交互。在标题提到的"zepto包含...

    zepto:node了一个

    标题“zepto:node了一个”暗示我们即将探讨的是一个与Node.js环境相关的项目,其中使用了Zepto库。Zepto是一个轻量级的JavaScript库,它为浏览器环境提供了类似于jQuery的功能,但体积更小,更适合移动端的Web应用...

    zepto.js中文离线手册网页版

    zepto.js是一款轻量级的JavaScript库,专为移动设备的浏览器设计,特别是针对iOS和Android等触屏设备。它提供了与jQuery相似的功能,但体积更小,加载速度更快,适合移动环境。Zepto.js的核心目标是实现一个适用于...

    移动端zepto工具包

    Zepto是一个轻量级的JavaScript库,专门为移动设备设计,特别是在iOS和Android平台上。它旨在为移动Web开发提供类似于jQuery的API,使开发者能够轻松地处理DOM操作、事件处理、动画效果以及Ajax交互。在移动端,...

    javascript框架- zepto.js

    zepto.js是一款专门为移动Web开发设计的轻量级JavaScript库,它的目标是成为jQuery在移动端的替代品。鉴于jQuery在桌面浏览器上的强大功能,zepto.js在保持相似API的同时,专注于移动设备的需求,以较小的体积提供...

    zepto手机移动端弹出提示框图标动画特效

    本资源“zepto手机移动端弹出提示框图标动画特效”正是一款专注于这一领域的优秀解决方案。Zepto是一个轻量级的JavaScript库,专为移动端浏览器设计,它提供了与jQuery相似的API,但在移动端具有更快的性能。 首先...

    zepto.min.js

    Zepto是用于现代浏览器的极简JavaScript库,具有与 jQuery兼容的API。 移动端常用js

    zepto-cookie-master

    在IT行业中,JavaScript库Zepto是为移动端浏览器设计的一个轻量级替代库,与jQuery有很高的API兼容性。本文将深入探讨"zepto-cookie-master"这个项目,它是一个专门用于处理Cookie操作的Zepto插件。 Cookie是Web...

    移动框架zepto.js

    3. **社区支持**:Zepto.js有活跃的社区和丰富的插件库,可以扩展其功能,如zepto.form插件用于处理表单提交,zepto.swipe用于滑动事件等。 4. **调试与优化**:在开发过程中,使用开发者工具检查性能瓶颈,适时...

    zepto 中文api文档 【离线文件】

    zepto.js 是一个轻量级的JavaScript库,主要针对移动设备和现代浏览器,它提供了类似于jQuery的核心功能,包括选择器、DOM操作、事件处理、动画效果以及Ajax等。这个压缩包包含了一份Zepto中文API的离线文档,方便...

    zepto下的page切换控件

    zepto-page-transitions是一个基于Zepto.js库的页面切换控件,它旨在为移动Web应用提供类似jQuery Mobile的页面滑动效果。Zepto.js是一个轻量级的JavaScript库,主要针对现代浏览器,尤其是移动设备,提供了与jQuery...

    zepto离线手册

    zepto.js是一个轻量级的JavaScript库,专为移动设备的Web开发设计,尤其是在iOS和Android平台上。它模仿了jQuery的API,使得开发者在移动端也能享受类似jQuery的开发体验。Zepto的核心目标是保持小巧的体积,同时...

    好用的zepto.js

    zepto.js 这个可以用tap事件

    zepto api document

    zepto API文档是一个重要的资源,尤其对于前端开发者来说,它提供了关于Zepto.js库的详尽信息。Zepto.js是一个轻量级的JavaScript库,设计用于移动设备的高性能Web开发,尤其是在iOS和Android上。它与jQuery有很高的...

    zepto文档api及其js文件

    zepto.js是一个轻量级的JavaScript库,专为移动设备的浏览器设计,特别是针对iOS和Android平台。它在设计上模仿了jQuery的API,提供了一系列用于处理DOM操作、事件、动画以及Ajax请求的方法,但体积更小,更适合...

Global site tag (gtag.js) - Google Analytics