Html Haxe IE9 xmlHTTPrequest问题
我在IE9中显示Haxe游戏时遇到问题。它实际上根本没有显示出来。我们在为Haxe编译的JS文件中找到了这个问题,并发现问题出在Haxe.httpapi中 IE9要使用xmlhttprequests,需要检查和完成某些事情。这些事情不是在haxeapi中完成的 这是没有我的修复程序的http类:Html Haxe IE9 xmlHTTPrequest问题,html,xmlhttprequest,internet-explorer-9,haxe,Html,Xmlhttprequest,Internet Explorer 9,Haxe,我在IE9中显示Haxe游戏时遇到问题。它实际上根本没有显示出来。我们在为Haxe编译的JS文件中找到了这个问题,并发现问题出在Haxe.httpapi中 IE9要使用xmlhttprequests,需要检查和完成某些事情。这些事情不是在haxeapi中完成的 这是没有我的修复程序的http类: this.url = url; this.headers = new List(); this.param
this.url = url;
this.headers = new List();
this.params = new List();
this.async = true;
};
$hxClasses["haxe.Http"] = haxe.Http;
haxe.Http.__name__ = ["haxe","Http"];
haxe.Http.prototype = {
setParameter: function(param,value) {
this.params = Lambda.filter(this.params,function(p) {
return p.param != param;
});
this.params.push({ param : param, value : value});
return this;
}
,request: function(post) {
var me = this;
me.responseData = null;
var r = this.req = js.Browser.createXMLHttpRequest();
var onreadystatechange = function(_) {
if(r.readyState != 4) return;
var s;
try {
s = r.status;
} catch( e ) {
s = null;
}
if(s == undefined) s = null;
if(s != null) me.onStatus(s);
if(s != null && s >= 200 && s < 400) {
me.req = null;
me.onData(me.responseData = r.responseText);
} else if(s == null) {
me.req = null;
me.onError("Failed to connect or resolve host");
} else switch(s) {
case 12029:
me.req = null;
me.onError("Failed to connect to host");
break;
case 12007:
me.req = null;
me.onError("Unknown host");
break;
default:
me.req = null;
me.responseData = r.responseText;
me.onError("Http Error #" + r.status);
}
};
if(this.async) r.onreadystatechange = onreadystatechange;
var uri = this.postData;
if(uri != null) post = true; else {
var $it0 = this.params.iterator();
while( $it0.hasNext() ) {
var p = $it0.next();
if(uri == null) uri = ""; else uri += "&";
uri += encodeURIComponent(p.param) + "=" + encodeURIComponent(p.value);
}
}
try {
if(post) r.open("POST",this.url,this.async); else if(uri != null) {
var question = this.url.split("?").length <= 1;
r.open("GET",this.url + (question?"?":"&") + uri,this.async);
uri = null;
} else r.open("GET",this.url,this.async);
} catch( e1 ) {
me.req = null;
this.onError(e1.toString());
return;
}
if(!Lambda.exists(this.headers,function(h) {
return h.header == "Content-Type";
}) && post && this.postData == null) r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var $it1 = this.headers.iterator();
while( $it1.hasNext() ) {
var h1 = $it1.next();
r.setRequestHeader(h1.header,h1.value);
}
r.send(uri);
if(!this.async) onreadystatechange(null);
}
,onData: function(data) {
}
,onError: function(msg) {
}
,onStatus: function(status) {
}
,__class__: haxe.Http
};
注意,这只实现了IE9修复,没有执行if语句来保持对其他浏览器的支持。但这真的很容易。IF语句非常简单
if(typeof XDomainRequest != "undefined") return new XDomainRequest();
基本上,我知道问题是什么,我只是不知道如何在Haxe本身的核心内改变这些东西
谢谢。干得好!
你必须直接联系Haxe邮件列表,大多数有想法的人都在那里而不是这里:)
砰!在我的haxe的本地版本中运行。修复了所有浏览器的问题,并发送了拉取请求:D
if(typeof XDomainRequest != "undefined") return new XDomainRequest();