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截图_动力节点Java学院整理
Jul 11 HTML / CSS
详解css3 object-fit属性
Jul 27 HTML / CSS
CSS3 透明色 RGBA使用介绍
Aug 06 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
Dec 03 HTML / CSS
谈谈对css属性box-sizing的了解
Jan 04 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
Aug 23 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
Jan 01 HTML / CSS
Canvas实现保存图片到本地的示例代码
Jun 28 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
Jul 24 HTML / CSS
详解淘宝H5 sign加密算法
Aug 25 HTML / CSS
css animation配合SVG制作能量流动效果
Mar 24 HTML / CSS
CSS实现鼠标悬浮动画特效
May 07 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静态类
2006/11/25 PHP
PHP的分页功能
2007/03/21 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
js select option对象小结
2013/12/20 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
如何基于线程池提升request模块效率
2020/04/18 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
致铅球运动员加油稿
2014/02/13 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js