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 box-sizing属性
Apr 17 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
Jul 18 HTML / CSS
CSS超出文本指定宽度用省略号代替和文本不换行
May 05 HTML / CSS
canvas实现图片马赛克的示例代码
Mar 26 HTML / CSS
html5基础教程常用技巧整理
Aug 20 HTML / CSS
html5中JavaScript removeChild 删除所有节点
May 16 HTML / CSS
HTML5通用接口详解
Jun 12 HTML / CSS
html5中canvas图表实现柱状图的示例
Nov 13 HTML / CSS
AmazeUI 输入框组的示例代码
Aug 14 HTML / CSS
浅析HTML5 meta viewport参数
Oct 28 HTML / CSS
html5+实现plus.io进行拍照和图片等获取
Jun 01 HTML / CSS
td 内容自动换行 table表格td设置宽度后文字太多自动换行
Dec 24 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
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
玩转vue的slot内容分发
2018/09/22 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
基于Python实现天天酷跑功能
2021/01/06 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
MYSQL支持事务吗
2013/08/09 面试题
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
异地年检委托书范本
2014/09/24 职场文书
爱护公物主题班会
2015/08/17 职场文书
网络研修随笔感言
2015/11/18 职场文书
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL