JS open App(未安装就跳转下载页面)
直接上代码
var APPCommon = {
downAppURl : "http://**/",//下载APP地址
downWeixin: "http://**",//微信下载APP地址
iphoneSchema: 'openApp.jdMobile://',//IOS打开APP 跳转地址(这个跳转地址需要IOS开发人员提供)
iphoneDownUrl: 'https://**',//IOS 下载地址
androidSchema: 'openApp.jdMobile://',//安卓打开APP 跳转地址 (这个跳转地址需要安卓开发人员提供)
androidDownUrl: 'http://**/',//安卓下载地址
openApp: function(){
var this_ = this;
if(this_.isWeixin()){ //微信
window.location = this_.downWeixin;
}
}else{//非微信浏览器
if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
var loadDateTime = new Date();
window.setTimeout(function() {
var timeOutDateTime = new Date();
if (loadDateTime && timeOutDateTime - loadDateTime < (1500 + 200)) {
window.location = this_.iphoneDownUrl;//ios下载地址
} else {
window.close();
}
},1600); //此处时间有待确定
window.location = this_.iphoneSchema;
}else if (navigator.userAgent.match(/android/i)) {
var loadDateTime = new Date();
var ifrSrc =this_.androidSchema;
if (!ifrSrc) {
return;
}
var ifr = document.createElement('iframe');
ifr.src = ifrSrc;
ifr.style.display = 'none';
document.body.appendChild(ifr);
var TimeLoad = setTimeout(function() {
document.body.removeChild(ifr);
window.location=this_.androidDownUrl; //android下载地址
}, 1600);
window.onblur=function(){
clearTimeout(TimeLoad);
};
}else{ //非ios、非安卓
window.location = this_.downAppURl;
}
}
},
isWeixin: function(){ //判断是否是微信
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
}
};
function openAP(){
APPCommon.openApp()
}
备:
1、经过测试ios用iframe尝试打开APP是行不通的,于是换了一个思路,用响应时间来控制。
2、ios安装APP自带浏览器safari会有alert框,目前未找到解决办法屏蔽。
3、微信禁止了打开APP 这个功能,所以建议跳转地址为到应用宝。
JS open App(未安装就跳转下载页面)的更多相关文章
- h5页面唤起app(iOS和Android),没有安装则跳转下载页面
浏览器和app没有通信协议,所以h5不知道用户的手机释放安装了app.因此只能是h5去尝试唤起app,若不能唤起,引导用户去下载我们的app. 微信里屏蔽了 schema 协议,如果在微信中打开h5, ...
- Windows 8.1中怎么启用Framework3.5或2.0 ( 一安装就跳到下载 Win8.1自带了Framework)
Windows 8.1中怎么启用Framework3.5或2.0 ( 一安装就跳到下载 Win8.1自带了Framework): Win+X键 打开 开始菜单 -> 命令提示符(管 ...
- HBuilder开发APP自动登录时跳过"登录页面"
刚接触开发公司APP项目,用HBuilder开发工具. manifest.json中的入口页面就是"登录页面",现在获取到自动登录状态是true,但是真机联调时"登录页面 ...
- 【JS】点击页面判断是否安装app并打开,否则跳转下载的方法
应用场景 App产品在运营推广上有一个需求,就是要求可以让用户在访问我们的推广网页时,就可以判断出这个用户手机上是否安装了我们的App,如果安装了则可以直接在网页上打开,否则就引导用户前往下载.从而形 ...
- h5 调起app 如果没安装就跳转下载
<!doctype html> <html> <head> <title></title> <meta charset="u ...
- 苹果iOS系统下检查第三方APP是否安装及跳转启动
在iOS系统,使用Url Scheme框架在APP间互相跳转和传递数据,本文只介绍如果检测和跳转. Url Scheme框架 如果你想知道ios设备中是否安装QQ这个软件,我们可以通过一个简单方法判断 ...
- jsp+js完成用户一定时间未操作就跳到登录页面
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" ...
- 安装oracle11g跳不过下载软件更新[INS-30131] 执行安装程序验证所需的初始设置失败
链接:https://www.jb51.net/article/88944.htm 问题已解决: 解决方法 第一步: 控制面板>所有控制面板项>管理工具>服务>SERVER 启 ...
- js判断手机还是pc并跳转相关页面
<script type="text/javascript"> function GetRequest() { var url = location.search; / ...
随机推荐
- 第三十四章 metrics(2)- 搭建metrics平台
一.基本架构图 1.整个架构组件: java客户端 dropwizard-metrics:springboot.hystrix的metric体层使用了这个,所以我们需要自己封装向statsd发包的方法 ...
- myBatis自动生成mapping,dao和model
myBatis没有自动封装实体类.所以都需要自己编写,但是表数据过多时.编写难度就会增加,错误率也会增加! 所以myBatis提供mybatis-generator-core-1.3.2-bundle ...
- 图解 & 深入浅出 JavaWeb:Servlet必会必知
从[JavaEE 要懂的小事] Http相关,一直想写点Web开发相关的.最近项目接口开发紧,还有准备新的九月份战斗.JDK IO源码就隔一段落,温故知新看看Servlet & JSP 相关. ...
- CSS样式之语法
选择符 选择符 {属性1:属性值1;属性2:属性值2} 选择符(selector):指定样式适用的标签,除指定标签外,样式不起作用 属性:样式的关键字 属性值:描述样式的值: 格式:属性与属性之间使用 ...
- IOS单例模式要做到3点
1,永远只分配一块内存来创建对象. +(instanst) static id instace = nil; static dispatch_once_t onceToken; dispatch_on ...
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
- python工具的安装
下载: python安装包:python-2.7.3.msi pywin32-218.win32-py2.7.exe setuptools安装包:setuptools-0.6c11.win32-py2 ...
- 图层的核心动画(CABaseAnimation)
Main.storyboard // // ViewController.m // 7A14.图层的核心动画 // // Created by huan on 16/2/4. // Copyr ...
- 用scala实现一个sql执行引擎-(下)
执行 上一篇讲述了如何通过scala提供的内置DSL支持,实现一个可以解析sql的解析器,这篇讲如何拿到了解析结果-AST以后,如何在数据上进行操作,得到我们想要的结果.之前说到,为什么选择scala ...
- 【DLL测试】为DLL项目建立测试
本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链接库为“JAVA调用动态链接库DLL之JNative学习”中使用的DLL, 只是项目及文件名称不同. 创建动态链接库项 ...