Cocos2d-js Android手机上微信内置浏览器黑屏解决方法

1、在Cocos2d-js开发过程中 通常会遇到很多问题。本次解决在安卓手机上的微信内置浏览器黑屏问题。

2、微信的内置浏览器和其它专业的浏览器不同。微信内置浏览器用x5内核。在一些方面比其它专业的浏览器比较落后,所以经常会遇到

卡顿、跳帧、黑屏问题。

3、对于黑屏问题一般是前后端交互的时候发生的问题。比如前端是POST请求 那么后端收到也应该是POST请求。但是微信内置浏览器不一样。

它强制性 的转成了 OPTION类型。所以后端收到的就是错误的数据。而且抓包的时候也会看到前端发出的数据是 null  。所以就需要正确的在前后端进行

改进。


4、以下是主要代码。

function  Http(){
    var _succCallback = function(){};//回调函数
    var _errCallback = function(){}; //出现错误的回调函数
}

function createXMLHttpRequest() {
    var xmlHttp;
    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
        if (xmlHttp.overrideMimeType)
            xmlHttp.overrideMimeType('text/xml');
    } else if (window.ActiveXObject) {
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
            }
        }
    }
    return xmlHttp;
}

Http.prototype.getJSON = function(url,data,callBack,errorCallBack ){
    if(typeof (callBack) == "function"){
        this._succCallback = callBack;
    }else{
        this._succCallback = function(){}
    }
    if(typeof (errorCallBack) == "function"){
        this._errorCallBack = errorCallBack;
    }
    var xmlHttp = createXMLHttpRequest();
    var datato2 = cc.loader._str2Uint8Array(data); //加密 [201,34,...]
    xmlHttp.open("POST", url+"?header=qqqq", true );//encodeURI(String(datato2)), true);
    xmlHttp.send(datato2); 
    Utils.showWaitting();
    
    var self = this;
    var callBack2 = callBack;
    var currentScene = cc.director.getRunningScene();
    xmlHttp.onreadystatechange = function(){ // ajax回调
        if (xmlHttp.status == 0) {
            Utils.showLowNet();
            self._succCallback("fail");
            return;
        }
        if(xmlHttp.readyState == 4){
            if( xmlHttp.status == 200 ){
                var strData = xmlHttp.response;
                if(strData.length>0){      //当内容为空时会有"[]"
                    self._succCallback(strData);
                }else{
                    cc.log("链接不畅,请检查网络");
                    return;
                }
            }else{
                //网络错误处理
                if(self._errorCallBack) {
                    cc.log("连接失败");
                }
            }
        }else{
            //网络错误处理
            if(self._errorCallBack) {
                cc.log("连接失败");
            }
        }
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值