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("连接失败");
}
}
}
}