IOS 内置浏览器,跳转前的http请求失效的问题

最近的一个程序,有个是个跳转页面,跳转之前会执行一段http请求,告诉后台请求的信息。但是发现在iphone 6中,一开始可以收到发过来的消息,之后发觉每次访问这个页面都是直接跳转,而之前的那个http请求没有发出去

<!DOCTYPE html>
<html>
<head>
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script>
var ua;
var isAndroid;
var isIos;
var isMicroMessenger;
var openid;
var url; 
var czxt = "pc";
$(document).ready(function(){
	ua = navigator.userAgent,
	isAndroid = /android/ig.test(ua),
	isIos = /iphone|ipod|ipad/ig.test(ua),  
	isMicroMessenger = /MicroMessenger/ig.test(ua);
	 	
	openid = getQueryString("openid");
	url = "http://service.gaotianyue.com/downloadhits/";
	if(isIos){
		czxt = "ios";
	}
	if(isAndroid){
		czxt = "android";
	}
	if(!isMicroMessenger){
		tellyou(url, openid, czxt);
		goToDownLoad();
	}
 	if (isMicroMessenger) {
    	 if (isIos) {
        	 document.body.innerHTML = '<img style="width:100%" src="imgs/weixin_tiaozhuan960x640.jpg">';
     	} else if (isAndroid) {
       		 document.body.innerHTML = '<img style="width:100%" src="imgs/weixin_tiaozhuan960x640.jpg">';
     	}
 	}
});
function goToDownLoad(){
	if(isIos){
		location.href = 'http://XXXX';
	}else{
		location.href = 'http://XXXY';
	}
}
function getQueryString(name) {  
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  
    var r = window.location.search.substr(1).match(reg);  
    if (r != null) return unescape(r[2]);  
    return null;  
};
function tellyou(url, openid,os){
    $.ajax({
        type:"GET",
        //dataType:"json",
        url:url+os,
        data:{
            openid: openid
        },
        success:function(data){
        	console.log(os+"tell sucess	"+"result="+url+data);
        },
        error:function(){
        	console.log(os+"tell failed	"+"result="+url+data);
        }
    })
};
</script>
</html>
用延迟跳转还是不行:

if(!isMicroMessenger){
tellyou(url, openid, czxt);
setTimeout(goToDownLoad(), 200);
}

最后在ajax 的返回结果里处理跳转才成功,

即判断在外部浏览器的时候使用

if(!isMicroMessenger){

tellyou(url, openid, czxt);
//setTimeout(goToDownLoad(), 200);
}

在ajax修改如下:

function tellyou(url, openid,os){
    $.ajax({
        type:"GET",
        //dataType:"json",
        url:url+os,
        data:{
            openid: openid
        },
        success:function(data){
        console.log(os+"tell sucess"+"result="+url+data);
        goToDownLoad();
        },
        error:function(){
        console.log(os+"tell failed"+"result="+url+data);
        goToDownLoad();
        }
    })
};

之前测试的是这种情况都不行

自己为了保险起见:

function tellyou(url, openid,os){
    $.ajax({
        type:"GET",
        //dataType:"json",
        url:url+os,
        data:{
            openid: openid
        },
        success:function(data){
         console.log(os+"tell sucess"+"result="+url+data);
       if(os="ios"||os=="android"){
    goToDownLoad();
    }
        },
        error:function(){
        console.log(os+"tell failed"+"result="+url+data);
         if(os="ios"||os=="android"){
      goToDownLoad();
    }
        }
    })
};

当然后台要返回“ios"或者“android”,问题终于解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值