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 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 HTML / CSS
CSS3制作酷炫的三维相册效果
Jul 01 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
Feb 10 HTML / CSS
CSS实现雨滴动画效果的实例代码
Oct 08 HTML / CSS
CSS3 中filter(滤镜)属性使用详解
Apr 07 HTML / CSS
详解css3中的伪类before和after常见用法
Nov 17 HTML / CSS
html2canvas把div保存图片高清图的方法示例
Mar 05 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
Aug 23 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
Dec 19 HTML / CSS
html5 横向滑动导航栏的方法示例
May 08 HTML / CSS
HTML5页面无缝闪开的问题及解决方案
Jun 11 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
jQuery中库的引用方法
2018/01/06 jQuery
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
python实现智能语音天气预报
2019/12/02 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
C语言笔试集
2012/07/24 面试题
2014年元旦促销活动方案
2014/02/22 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
奖励通知
2015/04/22 职场文书