js调用APP后,如果有App直接进App,没有则进入App下载页面
在网上找了一圈,都没有合格的。
看下边这段
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下载页面相关推荐
- vue H5页面唤起手机app(iOS和Android),没有安装则跳转下载页面
现在好多的app应用都有对应的h5页面,那么h5和app直接是如何交互的呢? 这里使用的是Scheme协议. 什么是URL Scheme? android中的scheme是一种页面内跳转协议,是一种非 ...
- js 调用webservice接口
1:建立的webservice工程正确运行. a: 定义接口类 public interface IMyWebService { public String example(String messag ...
- Html唤起手机APP,如果有就唤起,如果没有就跳到下载页。
公司是做游戏的,最近给了一个需求,游戏里面开房间,点击分享到微信后,微信用户点击该链接.如果用户已经安装了APP就直接拉起APP直接进去游戏房间,如果没有就要跳转到下载页面. 对于一个java小白来说 ...
- JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面...
JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { ...
- android 调用app后返回数据,h5和app交互
1.h5调用app的方法或者传值 // Android: window.Android.方法名(参数) // ios window.webkit.messageHandlers.方法名.postMes ...
- js调用了app爆露的方法导致app闪退
场景 app端使用webview加载网页,并提供了一个closeWeb方法给网页端调用.但是没想到,网页调用这个方法导致app闪退. 原因分析 大家知道,不管是Android还是IOS都只能在主线程中 ...
- 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 ...
- can only accept this command while in the powered on state(iOS蓝牙 打开app后的第一次扫描要扫描两次)
第一次扫描后系统才去检查蓝牙状态,调用更新的代理方法 ///开始扫描 - (void)startScan: (void(^)(CBPeripheral *))update{//1.扫描外设 Servi ...
- 怎么修改APP的服务器,安装app后怎么修改服务器地址
安装app后怎么修改服务器地址 内容精选 换一换 在移动设备上正确安装APP后,就可以通过APP登录NetEco服务器. 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考. ...
最新文章
- matlab入门笔记3
- stm32f407能跑linux吗_跑步能跑进医院?那我该做跑步运动吗?想健康一点太难了...
- 梁鑫:美股交易架构实践
- 12岁上大学,23岁获博士学位,这位天才科学家正式加盟清华
- PHP判断升级,版本检测升级(更新)库
- AI 外挂!百度 Lens 是如何突破人眼视觉极限的?
- vue.js 常用语法总结(一)
- OFbiz--HelloWorld
- centos redis php扩展,手动在centos下安装redis及php扩展
- linq 清除一条数据中的某个字段值_利用Postman中Tests断言校验返回结果
- python基于scipy模块实现统计学中三大相关系数的计算
- JDK API 1.6 中文版 及其简单使用
- 清华大学计算机杜瑜皓,我在清华等你来 | 金策:从容淡定 “金牌”之风
- Excel中关于数组函数的研究
- 自动阅读专业版第九次更新---原薅羊毛专业版(最后一次源代码分享)
- 不差钱!华为,给学生开百万年薪
- vue实现PS效果,鼠标拖拽指令、十字辅助线、鼠标选点、打印页面指定内容、生成随机id、颜色选择器、div上输入文字(类似QQ截图输入文字)、vue图片上传转base64...
- ArcGis之椭球面积计算工具
- position和float属性详解
- 落枕的原因 神奇穴位 预防落枕