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 事件. 系统版本大于 ...
随机推荐
- [52ABP实战课程系列]Docker&Ubuntu从入门到实战开课啦~
任何的课程都逃不开理论的支持 久等了各位,在Asp.NET Core2.0 项目实战入门视频课程结束后,根据发起的投票信息.Docker 排在首位.按照结果,我们开始进行Docker视频课程的录制. ...
- SpringBoot使用log4j
1.添加log4j相关依赖 在pom.xml文件中添加相关依赖: <!--配置log4j--> <dependency> <groupId>org.springfr ...
- Android fragment切换后onresume时报 Attempt to write to field 'int android.support.v4.app.Fragment.mNextAnim'
动态加载fragment以后,调用了remove方法移除Fragment,在返回来的时候报 Attempt to write to field 'int android.support.v4.app. ...
- java配置环境变量,无法也行javac问题
最近换了公司,搭建开发环境的时候出了点小差错,写篇随笔记录下,下载jdk的时候要选择符合自己电脑的jdk版本,位数. 笔者之前下载的时候没注意下了个32bit的jdk,开发用eclipse的时候打不开 ...
- scrapy安装教程
Step 1 •安装Python2.7(32位版本) –https://www.python.org/downloads/release/python-279/ Setp 2 •打开"运行& ...
- html学习之简单注册表单
<html> <head> <title>新用户注册</title> <meta charset="utf-8"> &l ...
- STL迭代器------Traits编程技法详细理解(一)
最近在看STL源码解析的迭代器(iterators)一章,涉及到c++ Traits的编程技法,刚开始看时一头雾水,反复看了好几遍之后才理解这个东西,因此来写写在这方面的理解,如有错误,希望读者指正. ...
- 关于myeclipse启动报错:An internal error has occurred. java.lang.NullPointerException解决办法
启动myeclipse报错,百度了一下网友处理方式,对比日志,发现现在已有的教程真的是巨人坑: 如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间 ...
- svg param.js的大bug
在svg文件里定义控件,带参数,然后引用. 如果是 text 且没有为其它添加默认值,那么会报错. 即, <svg width="200" height="200& ...
- 【linux之crontab,启动】
一.计划任务 atd at命令发布的任务计划 一次性的任务计划 at time ctrl+d 提交 time: 1.绝对时间:12:00 2.相对时间:+8 3.模糊时间:noon midnight ...