代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Css
】
唤醒app
作者:
Alice
/ 发布于
2019/10/28
/
1106
唤醒app
<!doctype html> <html> <head> <meta charset="utf-8"/> <title>redirectToNative的demo</title> </head> <body> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/> <div style="font-size:16px;color:#333"> 如果没有自动下载,请手动<a style="color:red;font-size:20px" href="http://m.etao.com/download.php?src=unsupport">点此下载一淘客户端</a>,安装后用一淘客户端的扫描功能重新扫描二维码即可; 如果您不想安装客户端,也可以<a style="color:red;font-size:20px" id="J_gotoH5" href="http://m.etao.com/#item/">直接访问etao触屏版</a>,同样有手机专享价以及优惠券和返利! </div> <script> /** * @fileoverview * @author miaojing<miaojing@taobao.com> * @module redirectToNative 移动页面中间跳转页面使用,打开native app,没安装则引导去下载app,不依赖任何kissy模块 * @ps 线上运行数月至今,目前测试发现魅族手机无法识别etao://item 怀疑手机系统不支持,具体原因客户端开发排查目前无果,这种情况可在跳转页面添加文本再次引导用户 **/ /** * @class RedirectToNative * @constructor */ var RedirectToNative = { /** * iosNativeUrl: string 必选 ios app上自定义的url scheme) 如 taobao://home(淘宝首页) etao://item?nid=xxx(一淘商品详情页) * andriodNativeUrl: string 必选 android app自定义的url scheme * iosInstallUrl: string 必选 ios app store里的安装地址 * androidInstallUrl: string 必选 android app的apk地址 * package: string 可选 默认com.taobao.taobao android的包名,如淘宝为com.taobao.taobao,etao为com.taobao.etao * iosOpenTime: int 可选默认800ms, 启动ios客户端所需时间,一般ios平台整体性能不错,打开速度较快 * androidOpenTime: int 可选默认2000ms,启动android客户端所需时间,android系统性能参差不齐所需启动时间也不齐,和android客户端本身启动时间也有关,比如3.0版本启动一淘客户端就平均比淘宝客户端要慢200ms */ init: function (config) { var self = this self.platform = self._UA() // pc下 什么都不处理 pc访问下可能href可以链接去其他地址 if (!self.platform) return if (self.platform == 'ios') { self.installUrl = config.iosInstallUrl self.nativeUrl = config.iosNativeUrl self.openTime = config.iosOpenTime || 800 } else { self.installUrl = config.androidInstallUrl self.nativeUrl = config.andriodNativeUrl self.openTime = config.androidOpenTime || 3000 self.package = config.package || 'com.taobao.taobao' } //只有android下的chrome要用intent协议唤起native if (self.platform != 'ios' && !!navigator.userAgent.match(/Chrome/i)) { self._hackChrome(); } else { alert("kk") self._gotoNative(); } }, /** * _hackChrome 只有android下的chrome要用intent协议唤起native * https://developers.google.com/chrome/mobile/docs/intents * @return {[type]} */ _hackChrome: function () { var self = this var startTime = Date.now() var paramUrlarr = self.nativeUrl.split('://'), scheme = paramUrlarr[0], schemeUrl = paramUrlarr[1] window.location = 'intent://' + schemeUrl + '#Intent;scheme=' + scheme + ';package=' + self.package + ';end' setTimeout(function () { self._gotoDownload(startTime) }, self.openTime) }, /** * [_gotoNative 跳转至native,native超时打不开就去下载] * @return */ _gotoNative: function () { var u = navigator.userAgent; var self = this var startTime = Date.now(), doc = document, body = doc.body, iframe = doc.createElement('iframe') iframe.id = 'J_redirectNativeFrame' iframe.style.display = 'none'; if(u.indexOf('Safari') > -1){ window.location.href=self.nativeUrl } else { iframe.src = self.nativeUrl; } // //运行在head中 if (!body) { setTimeout(function () { doc.body.appendChild(iframe) }, 0) } else { body.appendChild(iframe) } setTimeout(function () { doc.body.removeChild(iframe) self._gotoDownload(startTime) /** * 测试时间设置小于800ms时,在android下的UC浏览器会打开native app时并下载apk, * 测试android+UC下打开native的时间最好大于800ms; */ }, self.openTime) }, /** * [_gotoInstall 去下载] * @param {[type]} startTime [开始时间] * @return */ _gotoDownload: function (startTime) { var self = this var endTime = Date.now() if (endTime - startTime < self.openTime + 500) { window.location = self.installUrl } }, /** * [_UA 检测平台] * @return string [ios|android| ] */ _UA: function () { var ua = navigator.userAgent // ios if (!!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) { return 'ios' } else if (!!ua.match(/Android/i)) { return 'android' } else { return '' } }, } //透传参数 var searchStr = location.search, iosNativeUrl = 'taobao://detail.tmall.com/item.htm?id=543501628646', andriodNativeUrl = 'taobao://detail.tmall.com/item.htm?id=543501628646', downloadUrl = 'https://mpage.taobao.com/hd/download.html?spm=a21bo.50862.1997563273.1.28689e73fipyOa', configObj = { iosInstallUrl:"http://itunes.apple.com/app/id387682726?mt=8" , androidInstallUrl: "http://download.alicdn.com/wireless/taobao4android/latest/702757.apk", iosNativeUrl: iosNativeUrl, andriodNativeUrl: andriodNativeUrl, package: 'com.taobao.taobao', } RedirectToNative.init(configObj) </script> </body> </html>
试试其它关键字
同语言下
.
前端PC-移动端CSS公共样式+HTML
.
手机端页面通用样式
.
H5页面通用头部设置
.
elect默认样式美化代码兼容移动端和pc端
.
按钮效果 css
.
唤醒app
.
放大效果
.
html5+css3实现上拉和下拉刷新
.
html上传图片后,在页面显示上传的图片
.
html5实现点击弹出图片
可能有用的
.
前端PC-移动端CSS公共样式+HTML
.
手机端页面通用样式
.
H5页面通用头部设置
.
elect默认样式美化代码兼容移动端和pc端
.
按钮效果 css
.
唤醒app
.
放大效果
.
html5+css3实现上拉和下拉刷新
.
html上传图片后,在页面显示上传的图片
.
html5实现点击弹出图片
Alice
贡献的其它代码
(
9
)
.
唤醒app
.
当鼠标移开时已弹出子菜单自动消失
.
加密解密相关
.
仿Discuz文本框弹出层的效果
.
IMAP 文件夹名称编码 解码
.
查看HTML代码
.
Huffuman树
.
判断字符串是否为纯数字
.
GridControl如何显示行号
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3