在手机浏览器中判断App是否已安装
2015-11-09 15:34
639 查看
从网上搜到之前手机中判断App是否安装可以通过onblur事件+定时器来实现。
但现在要做这个功能时,按网上的说法已经不能实现了。因为现在浏览器中打开App,window不会触发onblur事件。
在尝试几次后发现,虽然window.onblur没有触发,但定时器仍然会停止,所以使用这个特点就尝试做了一个demo。
dome中包含2个页面,一个主页面,另一个用来打开App的页面:
主页面
checkApp.html
但现在要做这个功能时,按网上的说法已经不能实现了。因为现在浏览器中打开App,window不会触发onblur事件。
在尝试几次后发现,虽然window.onblur没有触发,但定时器仍然会停止,所以使用这个特点就尝试做了一个demo。
dome中包含2个页面,一个主页面,另一个用来打开App的页面:
主页面
<script type="text/javascript"> var log = function (msg) { $('body').append('<div class="log">' + msg + '</div>'); }; var tmCheck; function testApp(){ var $ifr = $('<iframe id="ifr"></iframe>') $ifr.attr('src', 'checkapp.html'); $('body').append($ifr); tmCheck = setTimeout(function(){ log('timeout, 未安装'); }, 3000); } function checkApp(state){ if( state == true ){ clearTimeout(tmCheck); return; } else { log('checkApp, 未安装'); } } </script> <button onclick="testApp();">Test</button>
checkApp.html
<script type="text/javascript"> function getSearchParam(key){ var result = window.location.search.match(new RegExp("(?:\\?|&)" + key + "=([^&]*)")); return result ? result[1] : ''; } var ticket = getSearchParam('_'); if( ticket != '' ){ if( Date.now() - ticket < 2500 ){ window.parent.checkApp(false); } } else { setTimeout(function(){ var t = Date.now(); location.href = 'app打开协议://'; setTimeout(function(){ window.parent.checkApp(true); location.href = 'checkapp.html?_=' + t; }, 1500); }, 100); } </script>
相关文章推荐
- Android init.rc文件浅析
- [git]android 开发下载某个branch中的某个git 目录
- [IOS 开发] NSArray去除重复元素的方法
- Android init.rc 笔记(概况及init.rc文法)
- Android开发之Fragments之间的交互
- 关于Ubuntu上建立express项目后执行node app.js没反应的问题
- Android Context完全解析,你所不知道的Context的各种细节
- Android性能优化典范B4
- iOS开发——获取设备具体型号(2015.11更新)
- 微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置
- iOS集成支付宝支付流程详解
- iOS开发之-------监听textfield编辑状态
- iOS中多线程与runloop的介绍
- Android性能优化典范(B3)
- Android 绘制渐变梯形,其他图形同理
- 推荐一个Android开发懒人库 -- ButterKnife
- Android fragment 重叠问题
- Android 输入系统之EventHub篇
- Android入门之文件系统操作(二)文件操作相关指令
- iOS 静态库相关