ios版本js检测_js检测ios版本并自动跳转到appstore - CSDN
  • JS判断IOS系统版本

    2014-11-18 11:22:06
    var ver = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); ver = parseInt(ver[1], 10); if(ver) { alert("需要IOS7及以上才可安装"); return; }
    var ver = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    	 ver = parseInt(ver[1], 10);
    	if(ver<7)
    	{
    		alert("需要IOS7及以上才可安装");
    		return;
    	}

    展开全文
  • js 判断IOS版本

    2019-06-24 05:10:30
    js 判断IOS版本号 先来观察 iOS 的 User-Agent 串: Phone 4.3.2 系统:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/...

    先来观察 iOS 的 User-Agent 串:

    Phone 4.3.2 系统:
    Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5
    iPone 5.1 系统:
    Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5
    iPone 5.1.1 系统:
    Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5

    我们可以从 User-Agent 里发现一些规律:都含有“iPhone”关键词;含有用下划线分隔的系统版本号。嗯,我们可以用这两个规律来分辨出 iOS4 以上的系统。

     

    function gt_ios4() {
        // 判断是否 iPhone 或者 iPod
        if((navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i))) {
            // 判断系统版本号是否大于 4
            return Boolean(navigator.userAgent.match(/OS [5-9]_\d[_\d]* like Mac OS X/i));
        } else {
            return false;
        }
    }

    posted on 2016-12-30 10:28 xwj小杰 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/xiangwanjie/p/6235875.html

    展开全文
  • var browser = { versions: function () { var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexO
    <script>
            var browser = {
                versions: function () {
                    var u = navigator.userAgent, app = navigator.appVersion;
                    return {//移动终端浏览器版本信息
                        trident: u.indexOf('Trident') > -1, //IE内核
                        presto: u.indexOf('Presto') > -1, //opera内核
                        webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                        gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                        mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
                        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                        android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                        iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                        iPad: u.indexOf('iPad') > -1, //是否iPad
                        webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
                    };
                } (),
                language: (navigator.browserLanguage || navigator.language).toLowerCase()
            }
            function isIOS9() {
                //获取固件版本
                var getOsv = function () {
                    var reg = /OS ((\d+_?){2,3})\s/;
                    if (navigator.userAgent.match(/iPad/i) || navigator.platform.match(/iPad/i) || navigator.userAgent.match(/iP(hone|od)/i) || navigator.platform.match(/iP(hone|od)/i)) {
                        var osv = reg.exec(navigator.userAgent);
                        if (osv.length > 0) {
                            return osv[0].replace('OS', '').replace('os', '').replace(/\s+/g, '').replace(/_/g, '.');
                        }
                    }
                    return '';
                };
                var osv = getOsv();
                var osvArr = osv.split('.');
                //初始化显示ios9引导
                if (osvArr && osvArr.length > 0) {
                    if (parseInt(osvArr[0]) >= 9) {
                        return true
                    }
                }
                return false
            }
            function Return_url(app_url) {
                if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
                    if (isIOS9()) {
                        window.location = "";
                    }
                    else {
                        window.location = "";
                    }
                }
                else if (browser.versions.android) {
                    window.location = app_url;
                }
                else {
                    window.location = app_url;
                }
            }
      </script>

    展开全文
  • iOSJS交互的总结

    2017-07-15 15:49:34
    实现iOSJS的交互

    iOS和JS的交互看似两个问题,其实要解决的问题只有一个,那就是JS如何调用native方法。因为查询文档我们就可以发现,在UIWebView中,native有直接调用JS的方法, 但是JS却没有直接调用native的方法。

    一、native直接调用js的方法:

    - (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

    二、JS直接调用native的方法

    其实,UIWebView并没有提供JS调用native的方法,但是我们却可以通过间接的方法来实现这样的操作。总结看来,间接实现的方式有三种:
    1. 在代理方法拦截Url,识别判断
    2. Block传值,实现JS调用OC
    3. 模型实现,JS直接用oc方法名来调用oc方法
    4. 使用第三方工具类:WebViewJavascriptBridge
    下面就来简单介绍一下上述方法的简单实用

    1.在代理方法拦截Url,识别判断

    这种方法原理很简单,UIWebView的界面响应会调起下面的代理方法

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

    在该方法中我们可以识别网页链接中的特殊字段,从而达到JS调起原生方法的目的
    //第一步:使用本地的h5文件加载一个网页

    //第一步:使用本地的h5文件加载一个网页
         NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"testWebPage" ofType:@"html"];
         NSError *error = nil;
         NSString  *str = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:&error];
         [self.webView loadHTMLString:str baseURL:nil];
    //JS中关键代码如下:
            <p > <button id="chat" type="button" onclick="location.href ='http://www.testwebpage/?funcName=printInfo:&&info=helloword'">打印信息</button>
            </p>
    //第二步:拦截协议
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
            //获取此时的URL
            //'http://www.testwebpage/?funcName=printInfo:&&info=helloword'
            NSURL *url = [request URL];
            NSString *completeString = [url absoluteString];
    
            //第一步:检测链接中的特殊字段
            NSString *needCheckStr = @"http://www.testwebpage/?";
            NSRange jumpRange = [completeString rangeOfString:needCheckStr];
            if (jumpRange.location != NSNotFound) {
            /*
             1.检测到链接中包含有特殊字段,客户端要接受响应并做后续处理这就相当于js调起了iOS,
             2.在真实的使用时,客户端需要和h5协调,双方需要统一监听的字段
             3.参数问题:如果此时的交互需要传递参数,参数也可以放在链接里,同样通过识别字符串的方法来获取
             */
            //第二步:拿到链接字符串的后续部分,然后分割字符串得到参数数据
            NSMutableString *linkmStr = [NSMutableString stringWithString:completeString];
            NSRange deleteRange = {0,needCheckStr.length};
            [linkmStr deleteCharactersInRange:deleteRange];
            NSArray *params = [linkmStr componentsSeparatedByString:@"&&"];
            //取出第一个参数:与h5协商好的方法名
            NSString *funcName = [params[0] componentsSeparatedByString:@"="][1];
            //取出第二个参数:信息字符串
            NSString *info = [params[1] componentsSeparatedByString:@"="][1];
            //第三步:调起iOS原生方法
            SEL ocFunc = NSSelectorFromString(funcName);
            if ([self respondsToSelector:ocFunc]) {
            //使用编译预处理,不显示警告提示
            #pragma clang diagnostic push
            #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
                [self performSelector:ocFunc withObject:info];
            #pragma clang diagnostic pop
            }
            //返回NO是为了不再执行点击原链接的跳转
            return NO;
        }
        return YES;
    }

    2.Block传值,实现JS调用OC

    这种方法需要引入头文件

     #import <JavaScriptCore/JavaScriptCore.h>

    具体的代码操作如下:
    JS关键代码:

    <p id="print" ><button onclick="sayHello('helloword')" type="button">问候</button></p>

    OC关键代码:

    - (void)webViewDidFinishLoad:(UIWebView*)webView{
        //获取JSContext对象
        JSContext *context=[webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
        //sayHello就是js的方法名称,使用一个block对应赋值
        context[@"sayHello"] = ^() {
            NSArray *args = [JSContextcurrentArguments];
            NSString *objString = [NSStringstringWithFormat:@"%@",args[0]] ;
            if (objString.length>0) {
                NSLog(@"%@",objString);
              }
            //得到参数之后,这里可以使用调用OC方法,即实现了JS对于OC的调用
         };
    }

    3.模型实现,JS直接用oc方法名来调用oc方法

    这种方法的优点在于,JS可以直接用oc方法名来调用oc方法,这样就类似于安卓的addJavaScriptInterface方法,在使用此方法时仍然要导入JavaScriptCore

    //第一步:创建一个用与JS交互的类JSHandler继承与NSObject
    //在类中声明一个遵守JSExport的协议,并且使JSHandler实现这个新的协议
    @protocolJSHandlerProtocol <JSExport>
    //单参数方法
    - (void)sayHello:(NSString*)greeting;
    
    //多参数的方法
    //由于涉及到多参数的问题,从第二个参数开始,外部参数名都要使用大写开头
    //因为JS调用OC方法时,是将OC方法拼接连成字符串,如果无法区分就会造成无法识别
    //比如对于下面的OC方法,JS调用时
    //javascript.sayHelloToWithGreeting(‘参数1’,参数2) //正确写法
    //javascript.sayHelloTowithGreeting(‘参数1’,参数2) //错误写法
    - (void)sayHelloTo:(NSString*)name WithGreeting:(NSString*)greeting;
    @end
    
    @interfaceJSHandler : NSObject<JSHandlerProtocol>
    
    @end
    //第二步:实现协议方法
    @implementationJSHandler:NSObject
    //单参数方法
    - (void)sayHello:(NSString*)greeting{
        NSLog(@"%s", __func__);
        NSLog(@"%@",greeting);
    }
    
    //两个参数的方法
    - (void)sayHelloTo:(NSString*)name WithGreeting:(NSString*)greeting{
        NSLog(@"%s", __func__);
        NSLog(@"%@,%@",name,greeting);
    }
    
    @end
    
     //第三步:在webView所在的视图控制中,创建JSContext对象,使用协议方法
       JSContext*jsContext = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
       JSHandler*jsHandler = [JSHandlernew];
     //使jsContext可以识别javascript这个类的方法
        jsContext[@"javascript"] = jsHandler;
    //第四步:此步骤是H5部分的操作,能够调起OC方法的代码如下
           <p>sayHello<buttonid="opennew"type="button"onclick="javascript.sayHello('你好!')">问候1</button></p>
             <p>sayHelloTo<buttonid="opennew2"type="button"onclick=
               "javascript.sayHelloToWithGreeting('zhoushuai', 'Good morning!')">问候2</button></p>
    

    4.使用第三方工具类:WebViewJavascriptBridge

    还未使用过,暂时不做过多介绍

    最后附上Demo的地址:https://github.com/DreamcoffeeZS/OC-And-JS

    其他参考链接:
    http://www.cocoachina.com/ios/20160127/15105.html
    WebViewJavascriptBridge的用法
    http://www.jianshu.com/p/2c7a53713e13

    展开全文
  • 本文按时间顺序,试着梳理Android和iOS诞生以来的各重要版本以及其特点,看看这两个系统各自的发展速度和重点。 2007年06月,iOS1.0 划时代的iOS第一代发布,可以说最核心的智能手机应用在这个版本已经有了,包括...
  • iOS JS交互之cookie设置与清空 项目开发中,由于JS交互这块,Android先行。所以这块机制也都是按照Android的实现去弄的。之前也有做过JS交互这一块,但是用的是url捕捉的形式,参数传递也都是通过接口连接拼接的...
  • **第一种:通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端。代码如下:**  var u = navigator.userAgent;  var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android...
  • //userAgent 属性是一个只读的字符串,...var u = navigator.userAgent; //Android终端 var isAndroid = u.indexOf('Android') &gt; -1 || u.indexOf('Adr') &gt; -1;...//iOS终端 var isiOS = !!u.match(/\(...
  • iOS 检测设备静音状态

    2017-08-15 23:26:47
    iOS 静音,RBDMuteSwitch
  • var u = navigator.userAgent var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器 var isiOS = !!u.match(/\(i[^;... //ios终端 if(is...
  • NSString *tempWidth;  tempWidth = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('img')[0].height"];  SJBLog(@"tempWidth===%@"...
  • var browser = { version: function() { var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('Trident') > -1, ...
  • IOS前后台切换检测

    2016-09-09 10:58:22
    if ([UIApplication sharedApplication].applicationState !... IOS后台的时候,一些OPEN GL的函数禁止调用。这时候渲染的话会造成crash。通常的处理方法是render的时候检测一下状态,处于后台直接返回。
  • 通过判断浏览器的userAgent,用正则来判断手机是否是ios或android客户端。<script type="text/javascript"> var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; ...
  • 前端写web页面的时候会遇到安卓手机与iOS手机页面展示不一样,还有就是在写APP的时候,此时就会遇到判断手机类型 // 判断安卓 function isAndroid() { var u = navigator.userAgent; if (u.indexOf("Android") > ...
  • 检测设备是否为iOS

    2020-06-02 14:02:41
    I'm wondering if it's possible to detect whether a browser is running on iOS, similar to how you ca
  • 使用current-device.min.js判断设备操作系统是Andorid还是IOS。 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&...
  • 一、判断是那种设备 var isiOS = !!...二、ios设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载appios(); if(isiOS){ function ios(){ var ifr = document.createElement
  • JS判断当前设备是 PC IOS Andriod 代码如下: &lt;script &gt; window.onload = function(){ var isPc = IsPC(); var isAndroid = is_android(); if (isPc){ //pc locat...
  • iOS_JS与OC的交互详解

    2017-11-08 14:15:02
    UIWebView: iOS 用来展示 web 端内容的控件。 1. 核心方法: - (NSString*)stringByEvaluatingJavaScriptFromString:(NSString *)script; script 就是 JS 代码,返回结果为 js 执行结果。 比如一个 JS ...
1 2 3 4 5 ... 20
收藏数 20,712
精华内容 8,284
关键字:

ios版本js检测