[英]Chrome Extension: webRequest Redirect to Existing Tab, Without Opening New Tab
[英]Chrome extension webrequest redirect after executing code that takes 4/5 seconds
我正在尝试创建一个Chrome扩展程序,该扩展程序执行一些代码(大约需要4秒钟),然后执行一个将用户重定向到页面的回调。 但是,以下代码不会发生重定向:
chrome.webRequest.onBeforeRequest.addListener(function(details) {
functionThatTakes4Seconds(function(){
return {
redirectUrl: redirect
};
);
}, {
urls: ["url.com"]
}, ["blocking"]);
当我不运行需要4秒钟的功能时,重定向有效:
chrome.webRequest.onBeforeRequest.addListener(function(details) {
return {
redirectUrl: redirect
};
}, {
urls: ["url.com"]
}, ["blocking"]);
是否超时? 有没有解决方法?
您不能从异步代码return
。
如果确实返回阻塞响应,则必须同步返回该响应; Chrome不会等待,您也不会收到回调来异步调用。
如果可选的opt_extraInfoSpec数组包含字符串“ blocking”(仅允许用于特定事件),则回调函数将被同步处理。 这意味着请求将被阻塞, 直到回调函数返回为止 。
例如,如果您的代码花了4秒钟完成但是同步的,则可以从中返回值并执行以下操作:
chrome.webRequest.onBeforeRequest.addListener(function(details) {
return {
redirectUrl: functionThatTakes4Seconds() // must return something
};
}, {
urls: ["url.com"]
}, ["blocking"]);
但是您不能进行异步调用,而让Chrome等待它。
与Messaging进行比较:那里有一个回调sendResponse
,可以潜在地异步调用。 但是不在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.