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感应鼠标的背景闪烁和图片缩放动画效果
May 14 HTML / CSS
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
Oct 10 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
Nov 16 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
Aug 14 HTML / CSS
详解CSS3 rem(设置字体大小) 教程
Nov 21 HTML / CSS
一篇文章带你学习CSS3图片边框
Nov 04 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
Jun 06 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
Apr 10 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
May 08 HTML / CSS
html5使用canvas压缩图片的示例代码
Sep 11 HTML / CSS
HTML5 3D旋转相册的实现示例
Dec 03 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
Feb 03 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
php实现读取内存顺序号
2015/03/29 PHP
php mysql 封装类实例代码
2016/09/18 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
js资料toString 方法
2007/03/13 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
八年级语文教学反思
2014/02/11 职场文书
给小学生的新年寄语
2014/04/04 职场文书
党风廉设责任书
2014/04/16 职场文书
派出所所长先进事迹
2014/05/19 职场文书
家庭困难证明
2014/10/12 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
公司周年庆典致辞
2015/07/30 职场文书
行为规范主题班会
2015/08/13 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
《正比例》教学反思
2016/02/23 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS