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("連線失敗");
}
}
}
}