我使用 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
});
但是,如果请求被阻止,则不会触发这些事件。
如果我没有注释掉失败事件,它会触发吗?我这样做是因为否则我会得到双重skip(),这是非常不可取的......
最佳答案
就我的测试而言,这是不可能做到的。
在我的例子中,我使用了一个窗口变量来指示页面是否加载了 chrome 标志以允许这种类型的调用,并且仅在允许的情况下执行 ajax 调用。否则,我只是跳过整个 ajax 调用并转到与失败调用相同的结果。
关于javascript - 如何捕获浏览器阻止的 XMLHttpRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29042794/