Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome.webRequest.onBeforeRedirect是否不停止重定向?_Javascript_Google Chrome_Google Chrome Extension_Webrequest - Fatal编程技术网

Javascript chrome.webRequest.onBeforeRedirect是否不停止重定向?

Javascript chrome.webRequest.onBeforeRedirect是否不停止重定向?,javascript,google-chrome,google-chrome-extension,webrequest,Javascript,Google Chrome,Google Chrome Extension,Webrequest,我正在开发一个chrome扩展,在部分扩展中,我需要检测重定向并询问用户是否希望继续。我试着使用chrome的WebRequestAPI来实现这一点,但它似乎不能正常工作,尽管我确信我的语法是正确的。以下是相关代码: chrome.webRequest.onBeforeRedirect.addListener(function (details) { if(details.frameId == 0){ if (confirm("This link is a redirec

我正在开发一个chrome扩展,在部分扩展中,我需要检测重定向并询问用户是否希望继续。我试着使用chrome的WebRequestAPI来实现这一点,但它似乎不能正常工作,尽管我确信我的语法是正确的。以下是相关代码:

chrome.webRequest.onBeforeRedirect.addListener(function (details) {
    if(details.frameId == 0){
        if (confirm("This link is a redirect. Do you want to continue?")){
            /* do nothing and let them redirect */
        }
        else {
            /* stop the redirect from happening */
            return {cancel: true};
        }
    }
}, {urls: ["<all_urls>"], types: ["main_frame"]}, ["blocking"]);
chrome.webRequest.onBeforeRedirect.addListener(函数(详细信息)){
如果(details.frameId==0){
if(确认(“此链接是重定向。是否要继续?”){
/*什么也不做,让他们改变方向*/
}
否则{
/*停止重定向的发生*/
返回{cancel:true};
}
}
},{URL:[“”],类型:[“主框架”]},[“阻止”];
为什么该方法不能正确阻止?

根据,不允许取消重定向

onBeforeRedirect

将要执行重定向时激发。重定向可以由HTTP响应代码或扩展触发。此事件是信息性的,并以异步方式处理它不允许您修改或取消请求。

根据,您不允许取消重定向

onBeforeRedirect

将要执行重定向时激发。重定向可以由HTTP响应代码或扩展触发。此事件是信息性的,并以异步方式处理它不允许您修改或取消请求。


Haibara是完全正确的,
onBeforeRedirect
纯粹是信息性的,但让我补充一下

onBeforeRequest
OnBeforeSendHeader
是唯一可以执行的事件-即,只有在实际发出请求之前才能取消。这是一个定义“取消”的问题,因为请求已经发出


请注意,您可以使用
onHeadersReceived
,用于您的目的-在该事件中提供的头是用于重定向请求的头,您可以通过重定向(此时允许)到您自己的扩展页来覆盖它


不过,我也必须说,你可能在这里追捕错误的嫌疑人。据我所知,
webRequest
,这只会吸引人;任何其他重定向方法,如更改
window.location
,将意味着此特定网络请求成功,然后生成后续导航,该导航对
webRequest
是透明的


一直以来,HTTP 3**重定向通常用于将HTTP重写为https或将URL修改为规范URL的良性目的。

Haibara是完全正确的,因为
onBeforeRedirect
纯粹是信息性的,但让我补充一点

onBeforeRequest
OnBeforeSendHeader
是唯一可以执行的事件-即,只有在实际发出请求之前才能取消。这是一个定义“取消”的问题,因为请求已经发出


请注意,您可以使用
onHeadersReceived
,用于您的目的-在该事件中提供的头是用于重定向请求的头,您可以通过重定向(此时允许)到您自己的扩展页来覆盖它


不过,我也必须说,你可能在这里追捕错误的嫌疑人。据我所知,
webRequest
,这只会吸引人;任何其他重定向方法,如更改
window.location
,将意味着此特定网络请求成功,然后生成后续导航,该导航对
webRequest
是透明的


一直以来,HTTP 3**重定向最常用于将HTTP重写为https或将URL修改为规范URL的良性目的。

应发出警报/确认/提示,以免阻塞js引擎和浏览器。可能他们已经实现了。alert/confirm/prompt是为了不阻塞js引擎和浏览器。也许他们已经实施了。