全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 5801|回复: 9

有大神懂JS吗?求助

[复制链接]
发表于 2017-10-2 18:45:45 | 显示全部楼层 |阅读模式
100金钱
我从别人网站上扒下来的代码,按道理说如果苹果手机访问这个页面,点击就会跳转到下载页,安卓手机访问就直接下载apk

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

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

  1.         var browser={
  2.       versions:function(){
  3.         var u = navigator.userAgent, app = navigator.appVersion;
  4.         return { //移动终端浏览器版本信息
  5.           trident: u.indexOf('Trident') > -1, //IE内核
  6.           presto: u.indexOf('Presto') > -1, //opera内核
  7.           webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  8.           gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  9.           mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  10.           ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  11.           android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
  12.           iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
  13.           iPad: u.indexOf('iPad') > -1, //是否iPad
  14.           webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
  15.         };
  16.       }(),
  17.       language:(navigator.browserLanguage || navigator.language).toLowerCase()
  18.     }
  19.     var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
  20.     if(browser.versions.mobile)
  21.     {
  22.         if (browser.versions.ios) {
  23.             document.getElementById('iphone').onclick = function(e){
  24.             //判断是否是移动设备打开。browser代码在下面
  25.                 if (ua.match(/MicroMessenger/i) == "micromessenger") {//在微信中打开  
  26.                     $('.com').show();
  27.                 }else{
  28.                     if(browser.versions.ios){
  29.                         var ifr = document.createElement('iframe');
  30.                         ifr.src = 'com.xx.xx://';
  31.                         ifr.style.display = 'none';
  32.                         document.body.appendChild(ifr);
  33.                         window.setTimeout(function(){
  34.                             document.body.removeChild(ifr);
  35.                             window.location.href = "https://xxx.xxx/xx";
  36.                         },2000)
  37.                     }
  38.                 }                       
  39.             };
  40.         }else if(browser.versions.android){
  41.             document.getElementById('android').onclick = function(e){
  42.                 if (ua.match(/MicroMessenger/i) == "micromessenger") {//在微信中打开  
  43.                     $('.com').show();
  44.                 }else{
  45.                     window.location.href = 'http://xxx.com/xxx.apk';
  46.                 }
  47.             }
  48.         }
复制代码

发表于 2017-10-2 21:10:34 | 显示全部楼层
设置的是20秒后跳转
发表于 2017-10-2 21:14:58 | 显示全部楼层
楼上说的很明白了,把2000改成200试试
发表于 2017-10-2 21:23:28 来自手机 | 显示全部楼层
上面判断iOS的正则不对啊,是判断Mac OS X的。
发表于 2017-10-2 22:04:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2017-10-2 22:09:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 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也不行,没有任何反应。不知道是代码哪里还有问题吗?我用下面的代码,可以实现自动跳转,但是点击后跳转却不行,不知道哪里还有问题呢?

  1.     if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
  2.         window.location="http://xxx.xxx/xxx";
复制代码
 楼主| 发表于 2017-10-3 10:48:41 | 显示全部楼层
已自行搞定

在本页直接判定不好搞,那我就搞了个桥页,点击下载,会跳转到一个判断页面(桥页)。如果是PC端打开则跳转到另外一个针对PC端的页面,如果是安卓则直接提示开始下载,如果是苹果则跳到apple的下载页面
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-26 03:18 , Processed in 0.078417 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表