在网上找了一圈,都没有合格的。

看下边这段

setTimeout(function() {alert('你还没安装,去下载去');// 去某个下载页面// const u = navigator.userAgent;let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端if (isiOS) {// 去下载ios}if (isAndroid){// 去下载安卓}
}, 4000);
window.location.href = data; // 这个是APP的协议(App端给的)

这段代码段很好理解,就是给一个延时去执行你要去下载。理想中是跳出去了。但是用户可能取消,不出去,这个时候就还是会去执行下载的代码。这个就不合理。

于是找到了这个

document.hidden // Boolean值,表示当前页面可见还是不可见
document.visibilityState // 返回当前页面的可见状态。分为"hidden"跟"visible"
document.addEventListener("visibilitychange",function(){} //监听页面是在前台还是在后台

我们改一下最初的代码即可

setTimeout(function() {if (!document.hidden) {// 在4秒内如果页面出去了。说明这个时候document.hidden是true,这段代码就不执行了。// 就算是再切回来也是不执行的。// 如果你进了这个函数,没离开。。那就会在4秒后跳进这里alert('你还没安装,去下载去');// 去某个下载页面// const u = navigator.userAgent;let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端if (isiOS) {// 去下载ios}if (isAndroid){// 去下载安卓}}
}, 4000);
window.location.href = data; // 这个是APP的协议(App端给的)

完美解决。

还是有问题,当跳出去后马上回来还是会进下载页,但是过段时间就不会再跳到下载页。算是小瑕疵不影响。

js调用APP后,如果有App直接进App,没有则进入App下载页面相关推荐

  1. vue H5页面唤起手机app(iOS和Android),没有安装则跳转下载页面

    现在好多的app应用都有对应的h5页面,那么h5和app直接是如何交互的呢? 这里使用的是Scheme协议. 什么是URL Scheme? android中的scheme是一种页面内跳转协议,是一种非 ...

  2. js 调用webservice接口

    1:建立的webservice工程正确运行. a: 定义接口类 public interface IMyWebService { public String example(String messag ...

  3. Html唤起手机APP,如果有就唤起,如果没有就跳到下载页。

    公司是做游戏的,最近给了一个需求,游戏里面开房间,点击分享到微信后,微信用户点击该链接.如果用户已经安装了APP就直接拉起APP直接进去游戏房间,如果没有就要跳转到下载页面. 对于一个java小白来说 ...

  4. JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面...

    JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { ...

  5. android 调用app后返回数据,h5和app交互

    1.h5调用app的方法或者传值 // Android: window.Android.方法名(参数) // ios window.webkit.messageHandlers.方法名.postMes ...

  6. js调用了app爆露的方法导致app闪退

    场景 app端使用webview加载网页,并提供了一个closeWeb方法给网页端调用.但是没想到,网页调用这个方法导致app闪退. 原因分析 大家知道,不管是Android还是IOS都只能在主线程中 ...

  7. js app缓存自动刷新_如何通过清除缓存来刷新App Store中的内容

    js app缓存自动刷新 Are you finding that you're not seeing new apps on the App Store, or that updates to ap ...

  8. can only accept this command while in the powered on state(iOS蓝牙 打开app后的第一次扫描要扫描两次)

    第一次扫描后系统才去检查蓝牙状态,调用更新的代理方法 ///开始扫描 - (void)startScan: (void(^)(CBPeripheral *))update{//1.扫描外设 Servi ...

  9. 怎么修改APP的服务器,安装app后怎么修改服务器地址

    安装app后怎么修改服务器地址 内容精选 换一换 在移动设备上正确安装APP后,就可以通过APP登录NetEco服务器. 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考. ...

最新文章

  1. matlab入门笔记3
  2. stm32f407能跑linux吗_跑步能跑进医院?那我该做跑步运动吗?想健康一点太难了...
  3. 梁鑫:美股交易架构实践
  4. 12岁上大学,23岁获博士学位,这位天才科学家正式加盟清华
  5. PHP判断升级,版本检测升级(更新)库
  6. AI 外挂!百度 Lens 是如何突破人眼视觉极限的?
  7. vue.js 常用语法总结(一)
  8. OFbiz--HelloWorld
  9. centos redis php扩展,手动在centos下安装redis及php扩展
  10. linq 清除一条数据中的某个字段值_利用Postman中Tests断言校验返回结果
  11. python基于scipy模块实现统计学中三大相关系数的计算
  12. JDK API 1.6 中文版 及其简单使用
  13. 清华大学计算机杜瑜皓,我在清华等你来 | 金策:从容淡定 “金牌”之风
  14. Excel中关于数组函数的研究
  15. 自动阅读专业版第九次更新---原薅羊毛专业版(最后一次源代码分享)
  16. 不差钱!华为,给学生开百万年薪
  17. vue实现PS效果,鼠标拖拽指令、十字辅助线、鼠标选点、打印页面指定内容、生成随机id、颜色选择器、div上输入文字(类似QQ截图输入文字)、vue图片上传转base64...
  18. ArcGis之椭球面积计算工具
  19. position和float属性详解
  20. 落枕的原因 神奇穴位 预防落枕

热门文章

  1. 计算机l特键,计算机(下排键的指法教学、图片的l拉伸、扭曲).doc
  2. 黎曼猜想(一) 欧拉乘积式
  3. 一元导数与多元求导数总结
  4. html清理超链接前面的黑点,【0基础学前端】1.2 段落文字图片超链接标签
  5. 武林秘籍之C语言大法.第二式 语句 带你走向武林之巅
  6. 江西外语外贸官网 仿写
  7. 2021年总结:前路有光,初心莫忘
  8. 织梦转pbootcms插件,自动pbootcms插件
  9. Python爬虫Scrapy轮子工具
  10. 30个HTML+CSS前端开发案例(四)