2012-07-19 33 views

回答

3

如果你有一個單一的XMLHttpRequest對象,你會聽readystatechange事件來檢測,當操作完成,然後讀取status屬性來檢測錯誤。

現在,如果您想要對所有對象執行此操作,則需要監聽所有發生的readystatechange事件,即註冊到相應的事件,如果XMLHttpRequest被創建或初始化。這可以通過覆蓋XMLHttpRequest原型的開放方法來完成,以便它註冊您的事件偵聽器,然後調用舊的open。

我用下面的代碼是(在Firefox):

(function(open) { 
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
    this.addEventListener("readystatechange", function() { 
     if (this.readyState==4 && (this.status != 200 && this.status != 301 && this.status != 302)) { 
     alert("Error: "+this.statusText) 
     } 
    }, false); 
    open.call(this, method, url, async, user, pass); 
    }; 
})(XMLHttpRequest.prototype.open); 

(假定open每XMLHttpRequest對象只能調用一次或你的事件多次註冊,如果你想成爲安全,您可能可以通過添加this.open = open;

重置打開功能