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实现的几个小loading效果
Sep 27 HTML / CSS
CSS3 完美实现圆角效果
Jul 13 HTML / CSS
CSS3 mask 遮罩的具体使用方法
Nov 03 HTML / CSS
CSS3制作酷炫的条纹背景
Nov 09 HTML / CSS
使用CSS3实现字体颜色渐变的实现
Aug 10 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
Jul 23 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
Jan 08 HTML / CSS
html5 自定义播放器核心代码
Dec 20 HTML / CSS
Html5实现用户注册自动校验功能实例代码
May 24 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
Aug 09 HTML / CSS
详解HTML5 window.postMessage与跨域
May 11 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
Jul 04 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 和 XML: 使用expat函数(三)
2006/10/09 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
angular 组件通信的几种实现方式
2018/07/13 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python编程开发之类型转换convert实例分析
2015/11/13 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
心理健康活动总结
2014/04/30 职场文书
年检委托书
2014/08/30 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
行政申诉状范文
2015/05/20 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
优化Mysql查询的示例
2022/04/26 MySQL
Spring中bean集合注入的方法详解
2022/07/07 Java/Android
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android