如何在任何XMLHttpRequest完成时运行一个函数?

我正在开发一个项目,它有几个我无法改变的脚本。 这些脚本通过AJAX更新页面。 更新完成后,我需要运行一些代码。

任何XMLHttpRequest完成后是否会触发任何事件? (或任何XMLHttpRequest状态更改?)。

不幸的是,我无法访问用于发出请求的特定XMLHttpRequest对象。

谢谢,

如果没有jQuery,您可以挂钩open方法,以便在XHR对象open时为每个XHR对象的readystatechange事件附加一个侦听器。 确保在发生任何Ajax之前运行以下代码:

 // save the real open var oldOpen = XMLHttpRequest.prototype.open; function onStateChange(event) { // fires on every readystatechange ever // use `this` to determine which XHR object fired the change event } XMLHttpRequest.prototype.open = function() { // when an XHR object is opened, add a listener for its readystatechange events this.addEventListener("readystatechange", onStateChange) // run the real `open` oldOpen.apply(this, arguments); } 

或者,如果您只关心成功的load事件,则可以监听该事件而不是readystatechange