Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Haxe IE9 xmlHTTPrequest问题_Html_Xmlhttprequest_Internet Explorer 9_Haxe - Fatal编程技术网

Html Haxe IE9 xmlHTTPrequest问题

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

我在IE9中显示Haxe游戏时遇到问题。它实际上根本没有显示出来。我们在为Haxe编译的JS文件中找到了这个问题,并发现问题出在Haxe.httpapi中

IE9要使用xmlhttprequests,需要检查和完成某些事情。这些事情不是在haxeapi中完成的

这是没有我的修复程序的http类:

                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();