我正在尝试将一个回调附加到Gmail中的"Send mail“ajax操作。我能够根据请求负载将发送邮件操作与其他AJAX操作区分开来,但无法连接到实际的AJAX调用中。
到目前为止,我已经尝试使用覆盖XMLHttpRequest.open()方法作为详细的here。但这并不管用。我还尝试了重写XMLHttpRequest.send()。也失败了。
有什么想法吗?非常感谢提前。
发布于 2015-05-05 03:48:44
谷歌的诀窍是,他们从拥有自己的JavaScript环境的iframe内部发送请求。但是,由于它是从与父对象相同的源加载的,因此即使从浏览器控制台也可以轻松地操作它:
[].slice.apply(document.querySelectorAll('iframe')).forEach(function (iframe) {
try {
var xhrProto = iframe.contentWindow.XMLHttpRequest.prototype;
var origOpen = xhrProto.open;
xhrProto.open = function () {
console.log('DO SOMETHING', arguments);
return origOpen.apply(this, arguments);
};
} catch (e) {}
});
您可能希望使用MutationObserver来可靠地检测新添加的iframes。
https://stackoverflow.com/questions/6584589
复制相似问题