我正在尝试学习编写在 greasemonkey 上运行的用户脚本。
我有一个小型的个人网站(没有人访问),所以我使用它作为我的实验工具。我想在每次页面有GET
请求时执行一个功能。我的页面有一些 ajax 请求,一些是用户发起的,一些是定时的。最初我为 DOM 节点插入添加了一个事件处理程序,但我意识到有些请求不会对 DOM 元素进行任何更改。
那么,是否可以向 Web 请求添加钩子?
如果没有,我该如何处理这个问题?我正在尝试在页面上显示一些很酷的统计数据,这些统计数据基本上记录了每个请求的计数器和成功/失败率......全部通过所述用户脚本。
ps:这完全没有意义,但我在假期里出于无聊而开始了这个,现在我无法摆脱它!
也许尝试覆盖XMLHttpRequest open prototype:
var XMLHttpRequestOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function () {
console.log("XMLHttpRequest open called!");
/* PUT WHAT YOU NEED HERE */
XMLHttpRequestOpen.apply(this, arguments);
}
XMLHttpRequest 是浏览器中 AJAX 工作的机制。发出请求时始终调用 open 方法。如上所述,通过"重写"此方法,您可以在每次发送请求时执行一些代码。