我正在开发一个项目,该项目有几个我无法更改的脚本。这些脚本通过 AJAX 更新页面。更新完成后,我需要运行一些代码。
当任何 XMLHttpRequest 完成时是否会触发任何事件?(或任何 XMLHttpRequest 状态更改?)。
不幸的是,我无法访问用于发出请求的特定 XMLHttpRequest 对象。
谢谢,
我正在开发一个项目,该项目有几个我无法更改的脚本。这些脚本通过 AJAX 更新页面。更新完成后,我需要运行一些代码。
当任何 XMLHttpRequest 完成时是否会触发任何事件?(或任何 XMLHttpRequest 状态更改?)。
不幸的是,我无法访问用于发出请求的特定 XMLHttpRequest 对象。
谢谢,
如果没有 jQuery,您可以挂钩该open
方法,以便在编辑readystatechange
XHR 对象时为每个 XHR 对象的事件附加一个侦听器open
。确保在发生任何 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
.