通过userAgent去判断,先判断是否为移动端,可以判断是iOS终端和Android终端,也可以具体到应用进行判断微信,微博,qq访问。
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>用indexof判断设备</title>
</head>
<body>
<a href="javascript:;" id="J_checkplatformbtn">用indexOf判断设备</a><script>
    window.onload=function(){
        var browser = {
           versions: function() {
                var u = navigator.userAgent,
                    ua = navigator.userAgent.toLowerCase();
                    return {
                        //内核,比如ie,firefox,chrome,opera,苹果
                        trident: u.indexOf('Trident') > -1, //IE内核
                        gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                        webkit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                        presto: u.indexOf('Presto') > -1, //opera内核
                        //终端,操作系统,比如PC端,os,移动端,ios,android
                        mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                        android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
                        //设备,比如iphone,ipad
                        iphone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
                        ipad: u.indexOf('iPad') > -1, //是否iPad
                        //应用程序,比如Safari浏览器,UC浏览器,微信,微博,QQ
                        webapp: u.indexOf('Safari') == -1, //是否web应用程序,没有头部与底部
                        wechat: ua.match(/MicroMessenger/i) == "micromessenger", //微信
                        weibo: ua.match(/WeiBo/i) == "weibo", //微博
                        qq: ua.match(/QQ/i) == "qq" //qq
                    };
           }(),
           language: (navigator.browserLanguage || navigator.language).toLowerCase() //检测浏览器语言
        };
        //检查设备, mainFun
        function checkDevice(){
            if (browser.versions.mobile) {
                //在移动端浏览器打开
                if (browser.versions.ios) {
                    //在IOS浏览器打开
                    alert('ios操作系统'+ navigator.userAgent);
                }if (browser.versions.android) {
                    //在安卓浏览器打开
                    alert('android操作系统'+ navigator.userAgent);
                }if (browser.versions.iphone) {
                    //在iphone中打开
                     alert('iphone设备'+ navigator.userAgent);
                }if (browser.versions.ipad) {
                    //在ipad中打开
                    alert('ipad设备'+ navigator.userAgent);
                }if (browser.versions.webapp) {
                    //在webapp中打开
                    alert('webapp应用程序'+ navigator.userAgent);
                }if (browser.versions.wechat) {
                    //在微信中打开
                    alert('wechat应用程序'+ navigator.userAgent);
                }if (browser.versions.weibo) {
                    //在新浪微博客户端打开
                    alert('weibo应用程序'+ navigator.userAgent);
                }if (browser.versions.qq) {
                    //在QQ空间打开
                    alert('qq应用程序'+ navigator.userAgent);
                }
            }
            else {
                //在PC端浏览器打开
                if (browser.versions.trident) {
                   //在IE浏览器打开
                   alert('在IE浏览器打开'+ navigator.userAgent);
                }if (browser.versions.gecko) {
                   //在火狐浏览器打开
                   alert('在火狐浏览器打开'+ navigator.userAgent);
                }if (browser.versions.webkit) {
                   //在苹果、谷歌浏览器打开
                   alert('在苹果、谷歌浏览器打开'+ navigator.userAgent);
                }if (browser.versions.presto) {
                   //在opera浏览器打开
                   alert('在opera浏览器打开'+ navigator.userAgent);
                }
            }
        };
        function addEvent(obj,type,handle){
            try{  // Chrome、FireFox、Opera、Safari、IE9.0及其以上版本
                obj.addEventListener(type,handle,false);
            }catch(e){
                try{  // IE8.0及其以下版本
                    obj.attachEvent('on' + type,handle);
                }catch(e){  // 早期浏览器
                    obj['on' + type] = handle;
                }
            }
        }
        //这里使用 try{ ... } catch(e){ ... } 代替 if ... else... 语句,避免浏览器出现错误提示。
        var triggerbtn=document.getElementById('J_checkplatformbtn');
        addEvent(triggerbtn,'click',checkDevice);
    }
</script>
</body>
</html>

用indexOf判断设备的更多相关文章

  1. 用indexOf判断设备是否是PC端?

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. js判断设备,跳转app应用、android市场或者AppStore

    js移动设备判断方法大全 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" > ...

  3. js检查判断设备

    js检查判断设备 var navigatorType = {}; var u=navigator.userAgent; navigatorType.IsIE= u.indexOf('Trident') ...

  4. IOS判断设备是否已越狱

    转自:http://www.cnblogs.com/supercheng/archive/2012/12/05/2804166.html - (BOOL)isJailbroken { BOOL jai ...

  5. JS判断设备终端(PC,iPad,iPhone,android,winPhone)和浏览器

    JS判断设备终端(PC,iPad,iPhone,android,winPhone)和浏览器 var ua = navigator.userAgent; var browser = {}, weixin ...

  6. 判断iPhone和iPad 判断设备版本

    //判断iPhone和iPad #define IS_IPHONE (!IS_IPAD) #define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInt ...

  7. 调用[[UIDevice currentDevice] userInterfaceIdiom]==UIUserInterfaceIdiomPad判断设备

    将模拟器改为Ipad时,调用[[UIDevice currentDevice] userInterfaceIdiom]==UIUserInterfaceIdiomPad判断设备是否为Ipad,但程序并 ...

  8. (原) Jquery 判断设备是PC端,还是移动端

    判断设备是PC端,还是移动端 var ua = navigator.userAgent.toLocaleLowerCase(); var pf = navigator.platform.toLocal ...

  9. Android之判断设备网络连接状态,并判断连接方式

    在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络.判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线 ...

随机推荐

  1. 关于Tabula FPGA的话题 (转)

    最近关注了一下Tabula的产品,特别是这个公司的FPGA.我的关注源于Intel对Tabula的支持.最近和在FPGA方面有较深理解的几位人士简单聊了聊,以下是这次对话的主要内容,希望能对从事这方面 ...

  2. tyvj1213 嵌套矩形

    描述    有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如 ...

  3. Sql存储过程分页--临时表存储

    set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Au ...

  4. ZeroMQ(java)中对IO的封装(StreamEngine)

    哎,各种各样杂七杂八的事情...好久没有看代码了,其实要搞明白一个与IO相关的框架,最好的办法就是把它的I/0的读写两个过程搞清楚...例如在netty中,如果能将eventLoop的运行原理搞清楚, ...

  5. poj2240最短路 floyd

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17360   Accepted: 7308 Descri ...

  6. sys.path和os.path

    sys.path和os.path1.sys.path是python搜索模块的路径集合,是个list:os.path是os的一个模块,是操作文件和目录的模块 2.sys.path和PYTHONPATH首 ...

  7. 【转】如何修改Chrome缓存目录的地址

    本文转自:http://www.nowamagic.net/librarys/veda/detail/2573 C盘空间越来越小,在Win7里还标红了,心里看得不舒服,得想一些方法腾出一些空间.看了A ...

  8. linux自定义脚本添加到rc.local脚本无法正常运行的问题

    为了能科学地上网,你懂的.其中需要将服务端做成开机启动.然而脚本在secure crt下能正常运行,添加到/etc/rc.local下却无法正常启动服务.用ps查找了下,脚本是运行了,但服务没起来.于 ...

  9. iOS constraint被应用于view上的时间

    在viewdidload时,constraint是没有被应用的,之后在layoutSubviews时,系统应用了constraint.但是我感觉在viewWillLayoutSubviews函数时就已 ...

  10. codeforces A. Candy Bags 解题报告

    题目链接:http://codeforces.com/contest/334/problem/A 题意:有n个人,将1-n袋(第 i  袋共有 i  颗糖果,1<= i  <=n)所有的糖 ...