拼命二郎 发表于 2017-10-2 18:45:45

有大神懂JS吗?求助

我从别人网站上扒下来的代码,按道理说如果苹果手机访问这个页面,点击就会跳转到下载页,安卓手机访问就直接下载apk

但是现在安卓访问点击就下载apk,苹果访问手机都戳烂了也不跳转到下载页

不知道是哪里代码有问题?求助大神帮忙看一下,谢谢!

      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.*/), //是否为移动终端
          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 , //是否为iPhone或者QQHD浏览器
          iPad: u.indexOf('iPad') > -1, //是否iPad
          webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
      };
      }(),
      language:(navigator.browserLanguage || navigator.language).toLowerCase()
    }
    var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
    if(browser.versions.mobile)
    {
      if (browser.versions.ios) {
            document.getElementById('iphone').onclick = function(e){
            //判断是否是移动设备打开。browser代码在下面
                if (ua.match(/MicroMessenger/i) == "micromessenger") {//在微信中打开
                  $('.com').show();
                }else{
                  if(browser.versions.ios){
                        var ifr = document.createElement('iframe');
                        ifr.src = 'com.xx.xx://';
                        ifr.style.display = 'none';
                        document.body.appendChild(ifr);
                        window.setTimeout(function(){
                            document.body.removeChild(ifr);
                            window.location.href = "https://xxx.xxx/xx";
                        },2000)
                  }
                }                     
            };
      }else if(browser.versions.android){
            document.getElementById('android').onclick = function(e){
                if (ua.match(/MicroMessenger/i) == "micromessenger") {//在微信中打开
                  $('.com').show();
                }else{
                  window.location.href = 'http://xxx.com/xxx.apk';
                }
            }
      }

iiffdhh2 发表于 2017-10-2 21:10:34

设置的是20秒后跳转

lzcykevin 发表于 2017-10-2 21:14:58

楼上说的很明白了,把2000改成200试试

cgs3238 发表于 2017-10-2 21:23:28

上面判断iOS的正则不对啊,是判断Mac OS X的。

Vhc 发表于 2017-10-2 22:04:04

Vhc 发表于 2017-10-2 22:09:26

Kslr 发表于 2017-10-2 22:25:28

Mac OS 怎么给算到IOS了?
你还是直接用现成的LIB吧 https://github.com/faisalman/ua-parser-js

冻猫 发表于 2017-10-2 22:32:30

22行 判断的是MAC OS X,改成手机的啊。

拼命二郎 发表于 2017-10-2 22:47:49

Vhc 发表于 2017-10-2 22:04
楼主,这么简单的功能,你竟然写了这么一大堆代码。。。
另外,2楼 和 3楼 ,谁告诉你们2000毫秒等于20秒的 ...

我是想实现代码判断出当前浏览器是pc还是移动

如果是移动,那就分苹果和安卓

安卓现在已经能实现点击后就开始下载APK

苹果现在点击了,没反应。按照另外一个朋友说的,把browser.versions改为iphone和ipad也不行,没有任何反应。不知道是代码哪里还有问题吗?我用下面的代码,可以实现自动跳转,但是点击后跳转却不行,不知道哪里还有问题呢?

    if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
      window.location="http://xxx.xxx/xxx";

拼命二郎 发表于 2017-10-3 10:48:41

已自行搞定

在本页直接判定不好搞,那我就搞了个桥页,点击下载,会跳转到一个判断页面(桥页)。如果是PC端打开则跳转到另外一个针对PC端的页面,如果是安卓则直接提示开始下载,如果是苹果则跳到apple的下载页面
页: [1]
查看完整版本: 有大神懂JS吗?求助