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实现超炫的loading加载动画效果
May 07 HTML / CSS
10分钟入门CSS3 Animation
Dec 25 HTML / CSS
CSS3实现王者匹配时的粒子动画效果
Apr 12 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
Nov 16 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
Mar 25 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
Oct 18 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
Apr 02 HTML / CSS
html5定位获取当前位置并在百度地图上显示
Aug 22 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
Jul 31 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
Nov 14 HTML / CSS
浅谈Html5多线程开发之WebWorkers
May 02 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的面试题集
2006/11/19 PHP
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
php 过滤器实现代码
2010/08/09 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
给领导的致歉信范文
2014/01/13 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
民事答辩状范本
2015/05/21 职场文书
法律意见书范文
2015/06/04 职场文书
教师节获奖感言
2015/07/31 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
Python中使用ipython的详细教程
2021/06/22 Python
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby