在HTML打开已安装的App,未安装跳转到对应的下载链接

借鉴  HTML中判断手机是否安装某APP,跳转或下载该应用

function lookApp () {var ua = navigator.userAgentvar isAndroid = /(Android);?[\s/]+([\d.]+)?/.test(ua)var isIpad = /(iPad).*OS\s([\d_]+)/.test(ua)var isIpod = /(iPod)(.*OS\s([\d_]+))?/.test(ua)var isIphone = !isIpad && /(iPhone\sOS)\s([\d_]+)/.test(ua)var isWechat = /micromessenger/i.test(ua)var isAlipay = /alipayclient/i.test(ua)if (isIphone) {// IPhone  
  // 默认跳转App协议 abc:// 后面的是跟App约定好携带的参数,这个根据实际情况添加或者删除window.location.href = "abc://abc.com?id=" + idsetTimeout(function(){
    // 未安装App即跳转IPhone商店window.location
= 'https://itunes.apple.com/cn/app/aaaaaaaa' //如果超时就跳转到app下载页},500);} else if (isAndroid) {// Android
// 默认跳转App协议
window.location.href = "abc://abc.com?id=" + id
setTimeout(function(){
// 未安装App即跳转Android商店
    window.location = 'http://a.app.qq.com/o/simple.jsp?aaaaaa' //如果超时就跳转到app下载页
},500)
  }
}

首先利用navigator.userAgent 判断出手机设备类型

根据上面分别和IOS、Android约定好的   apps custom url schemes (abc://)  尝试打开App(微信浏览器里面无法直接打开App,在手机浏览器可以正常使用

并延长0.5秒自动跳转到对应的商店下载链接

 

转载于:https://www.cnblogs.com/webBlog-gqs/p/9519316.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript --- 自定义数组的反序函数

想写一个自定义的_reverse函数,其作用是将传入的数组进行部分反序. 效果如下: 输入[1,2,3,4,5,6,7,8,9] 第一个将2~4个位置的数字反序 第二个将2~6个位置的数字反序. // js function _reverse(arr, s, e) {arr arr.join().slice(0,s) arr.join().slice(s,e).split().revers…

21 Fragment和短语法应用

React.Fragment jsx语法&#xff0c;相当于document.createDocumentFragment()创建文档碎片容器&#xff0c;优化渲染解决了没有根节点的问题<></>这种短语法也会声明React.Fragment但短语法不支持keyReact.Fragment只支持key属性&#xff0c;其余属性如事件等不支…

201521123004《软件工程》个人阅读作业1

task1Task2: 201521123004 林艺如 博客&#xff1a;https://www.cnblogs.com/dabaolyr/ 码云&#xff1a;https://gitee.com/dabao_lyr Task3&#xff1a;完成博客-阅读与思考 阅读参考材料&#xff0c;并回答下面几个问题&#xff1a; &#xff08;1&#xff09;回想一下你初入…

在sql当中为了让数据做缓存做with as的操作

今天看别人的代码&#xff0c;突然发现之前理解的sql的with as的用法有新的理解。 之前理解的with as只是想着做单表的union all 操作时才使用&#xff0c;今天发现在可以使用逗号做分割&#xff0c;做缓存不同的表数据。 下面的例子如下&#xff1a; WITH t1 AS (SELECT file_…

javascript --- 从数组中,找出比给定元素大一丁点的元素

目标如下: 从数组[1,3,2,4,5,6,7]中找到比第1个位置大一丁点的元素 function _findIndex(arr, j){let k -1;let key arr[j];for(let i j; i< arr.length; i) {if(arr[i] > key) {if( k ! -1){if(arr[i] < arr[k]) {k i;}} else {k i;}}}return k } let arr [1,…

22 React高阶组件

搭建服务端 yarn add express yarn add nodemon 在server目录下 npm init -y // 增加dev脚本"scripts": {"dev": "nodemon ./index.js"},引入 git HOC High Order Component 高阶组件&#xff0c;是组件的抽象HOC不是React提供的API&#xf…

PAT (Advanced Level) 1140~1143:1140模拟 1141模拟 1142暴力 1143 BST+LCA

1140 Look-and-say Sequence&#xff08;20 分&#xff09; 题意&#xff1a;观察序列D, D1, D111, D113, D11231, D112213111, ...&#xff0c;显然后一个串是对前一个串每一小段连续相同的字母及其个数的描述。例如&#xff0c;D112213111是对D11231的描述&#xff0c;原因是…

AngularJS:表达式

ylbtech-AngularJS&#xff1a;表达式1.返回顶部 1、AngularJS 表达式 AngularJS 使用 表达式 把数据绑定到 HTML。 AngularJS 表达式 AngularJS 表达式写在双大括号内&#xff1a;{{ expression }}。 AngularJS 表达式把数据绑定到 HTML&#xff0c;这与 ng-bind 指令有异曲同…

23 Refs的应用场景与选用思考

Refs含义 允许访问真实DOMReact数据流&#xff1a;通过props来实现父子组件的交互Refs允许强制修改子组件 // 1. 构造器离添加实例属性 this.ref React.createRef() // 2. 组件上绑定ref ref{this.ref} // 3. 使用&#xff1a;this.ref.currentinput class MyInput extends…

flutter --- Windows下环境配置

https://flutter.liulongbin.top/ https://www.cnblogs.com/zxsh/archive/2018/04/16/8859048.html

省选模拟赛记录(越往下越新哦~~~)

LOG 模拟赛第一次见尼玛这么给数据范围的……开考有点困,迷迷糊糊看完了三道题,真的是像老吕说的那样,一道都不会……思考T1,感觉有点感觉,但是太困了,就先码了暴力,发现打表可以50分,于是就大力打了一波表……转身T3,码出25分的O(n^2)算法,然后不会了……去了T2,码出35分的O(n…

MFC-CString与int互相转化

1. CString转int int n 0; CString str _T("123");n _ttoi(str); 2. int转CString int n 0; CString str; str.Format(_T(%d) , n); 参考&#xff1a;MFC中 CString与int的转化 vs2010 中 MFC::CString 如何和int相互转化 转载于:https://www.cnblogs.com/Tang-…

flutter --- 使用dio包

打开pubspec.yaml找到dependencies在最下面添加 dio: ^1.0.9ctrl s 之后,会自动下载依赖 使用: // get请求 import package:dio/dio.dart; Dio dio new Dio(); var response await dio.get("/test", data:{"id":12, "name":"marron&qu…

24 React.createRef()用法细节分析

通过React.createRef → ref对象通过元素的ref属性可以附加到React元素上一般通过构造器中给this的属性赋值一个ref&#xff0c;方便整个组件使用ref只要传递到react元素中&#xff0c;就可以利用ref的current属性访问到该真实DOM节点ref在componentDidMount和componentDidUpda…

对于下一代互联网的畅想

去中心化 每台客户机都将成为服务器, 争取对资源的充分利用 显示屏化 运算功能交给云服务器, 每台客户机的主要任务是显示 交互 联网而不是进行运算, 争取对资源的尽可能节省 优点 可以大大降低客户机的成本, 减少资源的浪费, 而且使客户机之间的区别变得更小(因为都主要负责显…

npm install mysql --save-dev

npm install X: 会把X包安装到node_modules目录中不会修改package.json之后运行npm install命令时&#xff0c;不会自动安装Xnpm install X –save: 会把X包安装到node_modules目录中 会在package.json的dependencies属性下添加X 之后运行npm install命令时&#xff0c;会自动…

dart --- 环境配置

1.进入官网下载SDK http://www.gekorm.com/dart-windows/ 2.运行下载的EXE文件.下一步下一步… 3.打开小黑框,输入: dart --version VSCode关于Dart的插件: DartCode Runner 插件安装好后,需重启VSCode. 新建 index.dart,输入以下代码 main () {print("Hello Dart…

Shiro 登录、退出、校验是否登录涉及到的Session和Cookie

前提 我们的使用的是DefaultWebSessionManager而不是ServletContainerSessionManager。这就意味着前者的session为Shiro的&#xff0c;后者的session为Tomcat的。 登录 DefaultWebSessionManager调用start()方法(在AbstractNativeSessionManager中)创建Session&#xff08;Simp…

25 Refs转发机制与在高阶组件中的使用

将子节点的ref暴露给父节点 16.3以上 Refs转发&#xff0c;将ref自动通过组件传递给子组件 1. 在父组件创建ref对象 2. 给子组件赋值ref 3. 通过React.forward向子组件转发ref属性 4. 父组件的ref对象指向子组件dom 5. ref参数只有在 React.forwardRef 组件内定义时可接受con…

26 JSX深度剖析与使用技巧

React对JSX的处理 React.createElement有三个参数&#xff1a;标签类型&#xff0c;属性集合&#xff0c;子元素 JSX其实是React.createElement函数调用的语法糖 JSX → 编译 → React.createElement调用形式 class App extends React.Component {render() {return (<div cl…