利用js判断手机是否安装某个app的多种方案


Posted in Javascript onFebruary 13, 2017

前言

大家在日常开发的时候,经常会遇到这样的需求,通过检测手机,如果本地安装了app那么直接打开,否则苹果要跳转到app-store,安卓则要跳到对应的市场,下面来给大家介绍几种解决的方案。

解决方案 一

//html代码中 的 a 标签,以微信为例,默认的是调用weixin scheme,去打开本机的微信,如果没有则跳转到相应连接

<a href="weixin://" rel="external nofollow" class="btn-download">立即打开</a>




// 为btn-download 绑定事件,如果在500ms内,没有解析到协议,那么就会跳转到下载链接 


 var appstore, ua = navigator.userAgent;
  if(ua.match(/Android/i)){ 
   appstore = 'market://search?q=com.singtel.travelbuddy.android';
  }
  if(ua.match(/iphone|ipod|ipad/)){
   appstore = "https://itunes.apple.com/cn/app/wei-xin/id414478124?mt=8&ign-mpt=uo%3D4"; 
  }
  function applink(fail){ 
   return function(){ 
    var clickedAt = +new Date; 
    // During tests on 3g/3gs this timeout fires immediately if less than 500ms. 
    setTimeout(function(){ 
      // To avoid failing on return to MobileSafari, ensure freshness! 
      if (+new Date - clickedAt < 2000){ 
       window.location = fail; 
      } 
    }, 500);  
   }; 
  } 
  $('.icon-download, .btn-download')[0].onclick = applink(appstore);

解决方案二

通过在页面中生成一个隐藏的iframe,iframe的src指向 app 协议,例如 weixin scheme,并监听onerror事件,意思是如果无法解析协议,就会触发onerror事件,但是我尝试了一下,未果。代码如下,可参考一下。

// 页面中有div#iframe-box 用来插入生成的iframe,还是以微信为例

 var ifm = document.createElement('iframe'), isInstalled;
  ifm.style.display = 'none';
  ifm.src = 'wixin://';
  ifm.onload = function(e){
   var e = e || window.event;
   e.preventDefault();
  }
  ifm.onerror = function(){
   //isInstalled = false;
   alert(1);
  }
  document.getElementById('iframe-box').appendChild(ifm);



// 但这时的问题是,iframe的src成功解析到了协议,则会直接跳转,但是解析不到的话,也不会触发error事件,这个还要继续研究


// 可以把上面的代码,放到函数中,然后作为某个按钮的响应函数。

解决方案三

对于ios手机,会有如下写法

<meta name="apple-itunes-app" content="app-id=414478124" />

将上面代码放到head中,根据name也会知道意思,app-id是微信的app-id,用ios手机看会看到提示,andriod比可以,结果自行实验。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
PHP+jQuery+Ajax实现多图片上传效果
Mar 14 Javascript
JavaScript数组随机排列实现随机洗牌功能
Mar 19 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
Jul 03 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
JavaScript探测CSS动画是否已经完成的方法
Aug 30 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 Javascript
详解使用vue实现tab 切换操作
Jul 03 Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 Javascript
JavaScript实现图片上传并预览并提交ajax
Sep 30 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 Javascript
详谈js中window.location.search的用法和作用
Feb 13 #Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
Feb 13 #Javascript
js获取当前页的URL与window.location.href简单方法
Feb 13 #Javascript
js实现九宫格拼图小游戏
Feb 13 #Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 #Javascript
关于不同页面之间实现参数传递的几种方式讨论
Feb 13 #Javascript
如何用js判断dom是否有存在某class的值
Feb 13 #Javascript
You might like
PHP判断是否有Get参数的方法
2014/05/05 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
PHP7变量处理机制修改
2021/03/09 PHP
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
js中作用域的实例解析
2017/03/16 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python help()函数用法详解
2014/03/11 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
数学教师求职信范文
2015/03/20 职场文书
公司管理建议书
2015/09/14 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书