HTML5 唤起 APP
<p><a href="xxx://app/question/95">点击跳转,直接回帖报名</a></p>
/* global navigator, document, window */
var UA = {
App: navigator.userAgent.indexOf('naitangApp') >= 0,
WeiXin: navigator.userAgent.indexOf('MicroMessenger') >= 0,
Android: navigator.userAgent.indexOf('Android') >= 0,
iPhone: navigator.userAgent.indexOf('iPhone') >= 0
}
var timeout
function replaceSchema(href) {
var schema = [
['xxx://app/question/', 'http://www.xxx.com/question/']
]
var len = schema.length
for (var i = 0; i < len; i += 1) {
href = href.replace(schema[i][0], schema[i][1])
}
return href
}
document.querySelector('body').addEventListener('click', function(e) {
var tg = (window.event) ? e.srcElement : e.target
while (tg.nodeName.toUpperCase() !== 'BODY') {
if (tg && tg.nodeName.toUpperCase() === 'A') {
var href = tg.getAttribute('href')
if (href.indexOf('naitang://') === 0) {
e.preventDefault()
if (UA.App) {
window.location.href = href
} else if (UA.WeiXin) {
window.location.href = 'http://a.app.qq.com/o/simple.jsp?pkgname=com.xxxxxx'
} else if (UA.Android) {
window.location.href = href
timeout = setTimeout(function() {
window.location.href = 'http://a.app.qq.com/o/simple.jsp?pkgname=com.xxxxxx'
}, 1000)
} else if (UA.iPhone) {
window.location.href = href
timeout = setTimeout(function() {
window.location.href = 'itms-apps://itunes.apple.com/cn/app/nai-tang/id00000000?mt=8'
}, 1000)
} else {
var pchref = tg.getAttribute('data-pc')
href = pchref ? pchref : replaceSchema(href)
window.location.href = href
}
}
break
} else {
tg = tg.parentNode
}
}
}, false)
function onVisibilityChanged() {
var hidden = document.hidden || document.webkitHidden
if (hidden && timeout) {
window.clearTimeout(timeout)
}
}
document.addEventListener('visibilitychange', onVisibilityChanged, false)
HTML5 唤起 APP的更多相关文章
- h5页面唤起app(iOS和Android),没有安装则跳转下载页面
浏览器和app没有通信协议,所以h5不知道用户的手机释放安装了app.因此只能是h5去尝试唤起app,若不能唤起,引导用户去下载我们的app. 微信里屏蔽了 schema 协议,如果在微信中打开h5, ...
- Ionic – 强大的 HTML5 Mobile App 开发框架
Ionic 是一个强大的 HTML5 应用程序开发框架,可以帮助您使用 Web 技术,比如 HTML.CSS 和 Javascript 构建接近原生体验的移动应用程序.Ionic 主要关注外观和体验, ...
- HTML5手机APP开发入(5)
HTML5手机APP开发入(5) 回顾一下 HTML5手机APP开发入(4) 如何自定义Component,directive HTML5手机APP开发入(3) 如何实现MVC的代码重构,自定义一个P ...
- HTML5手机APP开发入(4)
HTML5手机APP开发入(4) 课程内容 完成一个自定义的Component用来展现通讯录用户的明细信息如下图 http://bootsnipp.com/snippets/featured/prof ...
- HTML5手机APP开发入(3)
HTML5手机APP开发入(3) 课程内容: 按照AngularJs MVC框架进行代码重构,新建一个DataService服务类使用SQLite插件实现储存对通讯录的本地存储. 涉及的知识点: An ...
- HTML5手机APP开发入门(2)
HTML5手机APP开发入门(2) 课程内容 使用IonicFramework v2 + angular 2 完成一个简单的联系人列表的操作,有三个页面: ListPage,DetailPage,Ad ...
- HTML5手机APP开发入门(1)
HTML5手机APP开发入门(1) 开发框架 Ionicframework V2 + Angular 2 具体内容可以参考一下网站 http://ionicframework.net/ http:// ...
- h5唤起APP并检查是否成功
// 检查app是否打开 function checkOpen(cb) { const clickTime = +(new Date()); function check(elsTime) { if ...
- H5 唤起 APP的解决方案
H5 页面唤起APP或跳转到下载APP的某个链接地址.总结如下: 在 IOS 中, 系统版本在 8 以下时,可以监听页面的 pagehide / visibilitychange 事件. 系统版本大于 ...
随机推荐
- Python学习之中文注释问题
简单写个输入.输出,并注释 # 输入 print'100+200=',100+200 # 输入 name = raw_input() 报错了: SyntaxError: Non-ASCII chara ...
- 浅谈移动端适配-rem
对于移动端开发来说,无可避免的就是直面各种设备不同分辨率和不同DPR(设备像素比)的问题,在此忽略其他兼容性问题的探讨. 一. 移动端开发有关于像素的概念: 1.设备像素(dp),也叫物理像素.指设备 ...
- CentOS7 安装eclipse
1. 首先将eclipse的压缩包文件解压到/opt目录下,要使用root权限.执行如下解压命令:tar -zxvf eclipse-jee-oxygen-1a-linux-gtk-x86_64.ta ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- Spring(四):Spring整合Hibernate,之后整合Struts2
背景: 上一篇文章<Spring(三):Spring整合Hibernate>已经介绍使用spring-framework-4.3.8.RELEASE与hibernate-release-5 ...
- NetCore2.0技术文章目录
记录NetCore2.0的学习和工作,理解对与错不重要,重要的是,我飘~~~过 ------------------------------------------------------------ ...
- [转]解决scrapy下载图片时相对路径转绝对路径的问题
专注自:http://blog.csdn.net/hjy_six/article/details/6862648 这段时间一直在研究利用scrapy抓取图片的问题,我发觉,用官网的http://doc ...
- php实现记住密码自动登录的功能
$username=trim($_POST['username']); $password=md5(trim($_POST['password'])); $ref_url=$_GET['req_url ...
- js通过class获取元素时的兼容性解决方案
1:::::方法代码如下:function getByClass(sClass){ var aResult=[]; var aEle=document.getElementsByTagNa ...
- SQL知识点
关系型数据库:MySql非关系型数据库:Redis(以键值对的方式) SQL分几类: DDL:数据定义语言:create.alter.drop.truncate DML:数据操作语言:insert.d ...