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.0 图形构成实例练习一
Mar 19 HTML / CSS
浅析几个CSS3常用功能的写法
Jun 05 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 HTML / CSS
canvas画布实现手写签名效果的示例代码
Apr 23 HTML / CSS
Html5如何唤起百度地图App的方法
Jan 27 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
Nov 27 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
Jan 09 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
Jul 29 HTML / CSS
详解淘宝H5 sign加密算法
Aug 25 HTML / CSS
前端水印的简单实现代码示例
Dec 02 HTML / CSS
CSS实现多个元素在盒子内两端对齐效果
Mar 30 HTML / CSS
使用 CSS 构建强大且酷炫的粒子动画效果
Aug 14 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 管理系统程序中的后门
2009/08/05 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
浅谈Python中函数的参数传递
2016/06/21 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
电子商务专业应届毕业生求职信
2014/06/21 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
给朋友的道歉短信
2015/05/12 职场文书
河童之夏观后感
2015/06/11 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技