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 倾斜的网页图片库实例教程
Nov 14 HTML / CSS
CSS3 伪类选择器 nth-child()说明
Jul 10 HTML / CSS
纯CSS改变webkit内核浏览器的滚动条样式
Apr 17 HTML / CSS
纯CSS3实现圆角效果(含IE兼容解决方法)
May 07 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 HTML / CSS
用css3写出气球样式的示例代码
Sep 11 HTML / CSS
html5 canvas 画图教程案例分析
Nov 23 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
Jul 25 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
Apr 26 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
Ratchet 模态框的实现
Aug 19 HTML / CSS
Html5移动端网页端适配(js+rem)
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
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
php制作动态随机验证码
2015/02/12 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
python检测lvs real server状态
2014/01/22 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
花卉与景观设计系大学生求职信
2013/10/01 职场文书
制衣厂各岗位职责
2013/12/02 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
中学生演讲稿
2014/04/26 职场文书
财务负责人任命书
2014/06/06 职场文书
食品工程专业求职信
2014/06/15 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫
mysqldump进行数据备份详解
2022/07/15 MySQL