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