我有一个网页,上面写着- sample-page.html有两个链接-
sample-page.html link1 (GET,ajax) -链接2 (GET,新页)
当我单击link1时,会执行ajax GET请求,并且它仍然停留在示例-page.html.When中,我单击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的ajax请求。但上述两段代码都无法拦截来自link2的请求。有人能帮忙拦截这两个请求吗?
提前谢谢。
发布于 2019-11-28 05:39:38
您可以通过使用javascript event.preventDefault()功能来做到这一点。为单击该元素编写一个事件侦听器。做您想做的任何功能,如果您想停止发送请求,调用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();
}
})发布于 2019-11-28 05:19:30
在执行AJAX调用时,您完全控制了请求。但是,当您单击一个完全指向另一个URL的链接时,您就无能为力了。您可能需要查看事件。使用该事件,您可以取消它,以便显示一个弹出对话框,询问用户是否希望导航。
发布于 2019-12-05 21:10:16
将custome属性添加到要拦截的a标记(例如:数据截获)
<a href="\\google.com" data-intercept="true">google</a>Jquery
$(document).on('click','a[data-intercept="true"]',function(e){e.preventDefault(); alert();});jquery只会截取具有属性数据拦截="true“的标签单击。
https://stackoverflow.com/questions/59082098
复制相似问题