首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拦截任何请求- javascript

拦截任何请求- javascript
EN

Stack Overflow用户
提问于 2019-11-28 05:11:02
回答 4查看 622关注 0票数 3

我有一个网页,上面写着- sample-page.html有两个链接-

sample-page.html link1 (GET,ajax) -链接2 (GET,新页)

当我单击link1时,会执行ajax GET请求,并且它仍然停留在示例-page.html.When中,我单击link2,另一个get请求将被执行,并将出现一个新的页面sample-page2

为了拦截这两个请求,我编写了这样的javascript代码-

代码语言: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的请求。有人能帮忙拦截这两个请求吗?

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2019-11-28 05:39:38

您可以通过使用javascript event.preventDefault()功能来做到这一点。为单击该元素编写一个事件侦听器。做您想做的任何功能,如果您想停止发送请求,调用event.preventDefault(),否则保持原样。

代码语言:javascript
复制
<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();
    }
})
票数 2
EN

Stack Overflow用户

发布于 2019-11-28 05:19:30

在执行AJAX调用时,您完全控制了请求。但是,当您单击一个完全指向另一个URL的链接时,您就无能为力了。您可能需要查看事件。使用该事件,您可以取消它,以便显示一个弹出对话框,询问用户是否希望导航。

票数 1
EN

Stack Overflow用户

发布于 2019-12-05 21:10:16

将custome属性添加到要拦截的a标记(例如:数据截获)

代码语言:javascript
复制
<a href="\\google.com" data-intercept="true">google</a>

Jquery

代码语言:javascript
复制
 $(document).on('click','a[data-intercept="true"]',function(e){e.preventDefault(); alert();});

jquery只会截取具有属性数据拦截="true“的标签单击。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59082098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档