HTML5页面中尝试调起APP功能


Posted in HTML / CSS onSeptember 12, 2017

在市面上经常见到这种功能现如今应该非常普遍了,淘宝H5,知乎H5等等。。。

HTML5页面中尝试调起APP功能 HTML5页面中尝试调起APP功能

点击后会调起APP或者打开下载页面或者直接进行下载。

但是我这里发现知乎的这个功能有点不一样

他的逻辑是先提示我是否打开手机中的知乎APP(浏览器的机制询问用户操作许可),然后接着又弹出下载的提示。

HTML5页面中尝试调起APP功能 HTML5页面中尝试调起APP功能

解决方案URL scheme

URL scheme的方式在IOS和安卓都支持,兼容性较好。

优先使用iframe的方式

伪代码如下:

const iframe = document.createElement('iframe');
iframe.src = 'URL scheme'; // URL scheme的方式跳转
iframe.style.display = 'none';
document.body.appendChild(iframe);

这时候如果在一切环境支持的情况下,就会唤醒APP了。

但是这是理想情况下,更多的是要做兼容处理这快逻辑。

有些系统会拦截iframe的src(这只是造成唤醒APP失败的其中一种原因),因为这个src属性是一个法外hacker,很多漏洞都是利用他造成的。

所以这时候就要判断调APP失败的情况了。

伪代码如下:

const timer = 1000;
setTimeout(function() {
        // 执行成功后移除iframe
    document.body.removeChild(iframe);
    //setTimeout小于2000通常认为是唤起APP失败 
    if (Date.now() - last < 2000) {
            // 执行失败函数
            // 这里需要考虑一下之前知乎遇到的那个问题(浏览器询问导致时间小于2S)
    } else {
           //  执行成功函数
        }
}, timer);

理解:

  • 如果唤起成功,H5页面会被切换到后台,计时器就会延迟。即使用户再从app切换到H5页面,这个时间差必然也是大于2S的。
  • 如果唤起失败,定时器会准时执行(即使会有100ms的延迟也是够了),这时候必然是小于2S的。

在iframe被拦截的情况下,我们可以使用window.location.href = URL scheme来做兼容。

总结

以上所述是小编给大家介绍的HTML5页面中尝试调起APP功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

HTML / CSS 相关文章推荐
CSS3美化表单控件全集
Jun 29 HTML / CSS
css3绘制天猫logo实现代码
Nov 06 HTML / CSS
CSS3绘制超炫的上下起伏波动进度加载动画
Apr 21 HTML / CSS
HTML5 实现一个访问本地文件的实例
Dec 13 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
Mar 22 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
Oct 20 HTML / CSS
html5 input输入实时检测以及延时优化
Jul 18 HTML / CSS
吃透移动端 1px的具体用法
Dec 16 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
Mar 31 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
Apr 23 HTML / CSS
企业开发CSS命名BEM代码规范实践
Feb 12 HTML / CSS
html5使用canvas实现弹幕功能示例
Sep 11 #HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
Sep 11 #HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
Sep 07 #HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 #HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
Aug 28 #HTML / CSS
HTML5实现可缩放时钟代码
Aug 28 #HTML / CSS
HTML5操作WebSQL数据库的实例代码
Aug 26 #HTML / CSS
You might like
PHP 实例化类的一点摘记
2008/03/23 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
python zip文件 压缩
2008/12/24 Python
Python中文字符串截取问题
2015/06/15 Python
利用Python爬取可用的代理IP
2016/08/18 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
python输出数学符号实例
2020/05/11 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
以太网Ethernet IEEE802.3
2013/08/05 面试题
股票投资建议书
2014/05/19 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
慰问信范文
2015/02/14 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
中学生自我评价范文
2015/03/03 职场文书
我的1919观后感
2015/06/03 职场文书