如何捕获浏览器阻止的 XMLHttpRequest

how to catch a browser-blocked XMLHttpRequest?

本文关键字:XMLHttpRequest 何捕获 浏览器      更新时间:2023-09-26

我正在使用jQuery ajax来执行请求,但有时它被浏览器阻止(即当我的网站通过https运行时,它试图对http资源进行外部调用)。

我使用此代码发出请求

    jQuery.ajax({
        url:    videoCallString,
        success: function(result) {
            //...if it isn't, we can't playback the video so skip next slide
            if (result != 1) {
                console.log('found no video_check on localhost so skip slide '+self.nextSlide);
                self.skip();                
            }
            else {
                //success, proceed as normal
                self.beforeComplete();
            }
        }, /*
        fail: function() {
                console.log('found no video_check on localhost so skip slide '+self.nextSlide);
                self.skip();
        }, */
        complete: function(xhr, data) {
            if (xhr.status != 200) {
                //we could not find the check-video file on localhost so skip next slide
                console.log('found no video_check on localhost so skip slide '+self.nextSlide);
                self.skip();                        
            }
            else {
                //success, proceed as normal
                self.beforeComplete();
            }
        }, //above would cause a double-slide-skip, I think. Removed for now, that should be trapped by the fail clause anyways.
        async: true
    });

但是,如果请求被阻止,则不会触发这些事件。

如果我没有注释掉失败事件,它会触发吗?我这样做是因为否则我会得到双跳过(),这是非常不希望的......

就我的测试而言,这是不可能的。

就我而言,我使用了一个窗口变量来指示页面是否加载了 chrome 标志以允许这种类型的调用,并且仅在允许的情况下执行 ajax 调用。否则,我只是跳过整个 ajax 调用并转到与失败调用相同的结果。