javascript - 拦截任何请求 - javascript
问题描述
我有一个网页说-sample-page.html
里面有2个链接-
sample-page.html
- 链接 1 (GET, ajax)
- 链接 2 (GET, 新页面)
当我单击link1
一个 ajaxGET
请求时,它仍然停留在示例中page.html
。当我单击link2
另一个 get 请求时,sample-page2
将出现一个新页面。
为了拦截这两个请求,我编写了这样的 javascript 代码 -
//attempt-1 : javascript
(function (send) {
XMLHttpRequest.prototype.send = function () {
this.setRequestHeader('some-header-param', 'some-value');
send.apply(this, arguments);
};
})(XMLHttpRequest.prototype.send);
//attempt-2: jquery
/*$.ajaxSetup({
beforeSend: function (xhr,settings) {
xhr.setRequestHeader('some-header', 'some-header-value');
}
}); */
以上,两种尝试都成功地拦截了来自link1
. 但上述代码片段都无法拦截来自link2
. 谁能帮助如何拦截这两个请求?
提前致谢。
解决方案
您可以通过使用 javascript event.preventDefault() 功能来做到这一点。为该元素上的 onclick 编写一个事件侦听器。执行您想要的任何功能并调用 event.preventDefault() 如果您想停止发送请求,否则保持原样。
<a id='some_id'>click here</a>
document.getElementById('some_id').addEventListener('click',function(event){
//do whatever you want.
//If you want to stop the request.
if(need_to_stop){
event.preventDefault();
}
})
推荐阅读
- r - 如何按间隔折叠数据?
- objective-c - 如何在obj c中的浮点值小数后获得个位数?
- python - 基于旧的 groupby 创建新的 DataFrame
- basic - DDE 错误 285(应用程序拒绝执行 DDE)
- java - 在 gem5(或任何非 C 语言)中运行 Java 程序
- html - 反转html中列出的项目的顺序
- c# - 在 C# 中将文件附件发送到 Facebook Messenger API
- ruby - 网格战舰板 - 如何在某些点插入换行符?
- javascript - onfocus="blur()" 仅在移动设备上
- javascript - 仅在加载目标页面的 DOM 时,如何使用 jquery .load 获取数据?