这两天在做一个在手机上打开H5页面,然后下载手游。其他手机都可以,但是在华为手机上,用华为自带浏览器打开却不行。当跳转到downapp.html的时候。在华为自带浏览器地址上显示null,就是这样的:http://m.xxx.com/null
其他浏览器都是:http://m.xxx.com/downapp.html,这样就能下载了
代码是网上找的。用的jq
第一个页面是这样的:
function CheckIsAndroid() {
var browser = {
versions: function () {
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
};
}(),
}
if (browser.versions.android) {
return true;
}
}
function CheckIsIOS() {
var browser = {
versions: function () {
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
};
}(),
}
if (browser.versions.iPhone || browser.versions.iPad || browser.versions.ios) {
return true;
}
}
$(function () {
if (CheckIsIOS()) {
$('#download').attr('href', 'downapp.html?type=ios')
}
if (CheckIsAndroid()) {
//如果是Android
$('#download').attr('href', 'downapp.html?type=android')
}
});
上面是打开的第一个页面。点击下载后进入到下面第二个页面判断:
这个下载页面是从网易游戏那里下载过来用的。
view-source:https://adl.netease.com/d/g/d...
这样取得网易的游戏下载代码。
手游下载body{background: #fff; margin: 0;}
#main_container{position: relative;}
#main{-webkit-transform-origin: 0 0; width: 750px; min-height: 1220px; margin: 0 auto; }
.tab{
display: none;
position: relative;
width: 750px;
height: 100%;
}
.tab.show{display: block;}
.tab .refer{
position: relative;
width: 100%;
height: 100%;
}
.tab.android .refer{
background: url(images/android.jpg) no-repeat;
background-color: #fff;
}
.tab.ios .refer{
background: url(images/ios.jpg) no-repeat;
background-color: #fff;
}
#refer_no.ios{
background: url(images/ios_no.png) no-repeat;
background-color: #ededed;
}
#refer_no.android{
background: url(images/android_no.png) no-repeat;
background-color: #ededed;
}
#refer_no .back_to_index_button{
position: absolute;
text-indent: -9999px;
width: 400px;
height: 116px;
top: 582px;
left: 0;
right: 0;
margin: 0 auto;
}
// document.getElementsByTagName("html")[0].style.fontSize=document.body.clientWidth/375*312.5+"%";
// function orientation(event){
// var st=setTimeout(function(){
// document.getElementsByTagName("html")[0].style.fontSize=document.body.clientWidth/375*312.5+"%";
// },300)
// }
// if (typeof window.addEventListener != "undefined") {
// window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", function(e){
// orientation(e);
// }, false);
// }
// $("#main").height($(window).height());
var PAGESIZE = {
"width": 750,
"height": 1220
};
$(window).resize(reSize);
reSize();
function browserRedirect() {
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
return true
} else {
return false
}
}
function reSize() {
var pw = PAGESIZE.width;
var ph = PAGESIZE.height;
if (browserRedirect()) {
var tww = document.body.offsetWidth;
var twh = document.body.offsetHeight;
} else {
var twh = $(window).height();
var tww = twh / ph * pw;
$('#main').css({
'transform-origin': 'top center',
'-webkit-transform-origin': 'top center'
});
}
var wh = twh * pw / tww;
var sc = tww / pw;
var tw = Math.min(0, (pw - tww) * 0.5);
if (sc <= 1) {
tw = 0;
}
$('#main').css({
'transform': 'translate(' + tw + 'px, 0px) scale(' + sc + ')',
'-webkit-transform': 'translate3d(' + tw + 'px, 0px, 0px) scale(' + sc + ')',
'min-height': ph,
'height': ph,
});
$('#main_container').height(ph * sc);
}
// 通过localstorage获取游戏的安卓下载地址和ios下载地址
var iosUrlAddr = localStorage.getItem('iosUrlCode');
var androidUrlAddr = localStorage.getItem('androidUrlCode');
var android_type = true;
var ios_type = true;
// 将安卓下载地址和ios下载地址赋值给对应变量
var android_link = android_type ? '这里是安卓下载地址' : "首页地址"; // 安卓下载地址
var ios_link = ios_type ? iosUrlAddr : "这里是ios下载地址";// ios下载地址
var android_qq_url = '这里是安卓下载地址'; // qq端安卓下载地址
var iOS_qq_url = '这里是ios下载地址'; // qq
// if(android_link.indexOf("javascript:") != -1){
// android_type = false;
// }
// if(ios_link.indexOf("javascript:") != -1){
// ios_type = false;
// }
(function() {
var is_weixin = function() {
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
};
var is_yixin = function() {
if (ua.indexOf("yixin") > 0) {
return true;
} else {
return false;
}
};
var is_weibo = function() {
if (ua.indexOf("weibo") > 0) {
return true;
} else {
return false;
}
};
var params = function(u, p) {
var m = new RegExp("(?:&|/?)" + p + "=([^&$]+)").exec(u);
return m ? m[1] : '';
};
var download = function(url) {
if (ua.match(isIos) || ua == null) {
setTimeout(function(){
window.location.href = url;
},500);
}else{
window.location.href = url;
}
};
var addCheckCode = function(code) {
document.write(">");
};
var dtype = params(location.search, 'type');
var ua = navigator.userAgent.toLowerCase();
var isIos = /ipad|iphone|ipod|ios/i;
var isAndroid = /android/i;
var ios_no_class ="ios";// "images/ios_no.jpg";
var android_no_class ="android";// "images/android_no.jpg";
function showNoPackage(classname){
$("#refer_no").addClass(classname).addClass("show");
// $("#refer_no").fadeIn();
if(classname==ios_no_class){
if(ios_link.indexOf("javascript:") != -1){
download(ios_link);
}
}else if(classname==android_no_class){
if(android_link.indexOf("javascript:") != -1){
download(android_link);
}
}
}
function downloadIosOnPc(){
if(ios_link.toLowerCase().indexOf(".plist")>-1){//当ios下载地址为"***.plist"时且用户是在PC中打开,解析.plist文件获取ipa地址,跳转***.ipa地址下载,解析出错或者解析不到ipa地址则还是跳转****.plist地址
var plistUrl=ios_link.match(/https\:\/\/.*\.plist/)[0];
$.ajax({
type:"get",
url:"/ipa",
data: {uri: plistUrl},
success:function(data){
if(data.status=='ok'){
download(data.ipa);
}else{
download(ios_link);
}
},
error:function(error){
download(ios_link);
}
});
}else{
download(ios_link);
}
}
function checkDownload() {
if (is_weixin()) {
if(isIos.test(navigator.userAgent.toLowerCase()) && ios_type) {
if(ios_link.indexOf("javascript:") != -1){
download(ios_link);
} else if(iOS_qq_url.match(/^https?:\/\/\w+.\w+.qq.com\//)){
download(iOS_qq_url);
}else{
$('#weixin_show').addClass("show ios");
}
return;
} else if(isAndroid.test(navigator.userAgent.toLowerCase()) && android_type) {
if(android_link.indexOf("javascript:") != -1){
download(android_link);
} else if(android_qq_url.match(/^https?:\/\/\w+.\w+.qq.com\//)){
download(android_qq_url);
}else{
$('#weixin_show').addClass("show android");
}
return;
}
} else if (is_weibo()){
if(isIos.test(navigator.userAgent.toLowerCase()) && ios_type) {
if(ios_link.indexOf("javascript:") != -1){
download(ios_link);
} else {
$('#weibo_show').addClass("show ios");
}
return;
} else if(isAndroid.test(navigator.userAgent.toLowerCase()) && android_type) {
if(android_link.indexOf("javascript:") != -1){
download(android_link);
} else {
$('#weibo_show').addClass("show android");
}
return;
}
}
// if (is_yixin()) {
// if(isIos.test(navigator.userAgent.toLowerCase())){
// $('#yixin_show').addClass("yixin ios").show();
// }else{
// $('#yixin_show').addClass("yixin android").show();
// }
// return;
// }
switch (dtype) {
case "ios":
if(!ios_type){
showNoPackage(ios_no_class);
}else{
if (ua.match(isIos) || ua == null) {
download(ios_link);
} else {
downloadIosOnPc();
}
}
break;
case "android":
if(!android_type){
showNoPackage(android_no_class);
}else{
if (ua.match(isAndroid)) {
} else {
}
download(android_link);
}
break;
case "qr":
if (ua.match(isIos) || ua == null) {
if(!ios_type){
showNoPackage(ios_no_class);
}else{
download(ios_link);
}
} else {
if(!android_type){
showNoPackage(android_no_class);
}else{
download(android_link);
}
}
break;
default:
if (ua.match(isIos) || ua == null) {
if(!ios_type){
showNoPackage(ios_no_class);
}else{
download(ios_link);
}
} else if (ua.match(isAndroid)) {
if(!android_type){
showNoPackage(android_no_class);
}else{
download(android_link);
}
} else {
if(android_type){
download(android_link);
}else if(ios_type){
downloadIosOnPc();
}else{
showNoPackage(android_no_class);
}
}
break;
}
}
checkDownload();
})();