嘿试图在特定时间从page1重定向到第2页(在标签内,而不是打开新标签)。
的manifest.json:
{
"name": "Google",
"description": "Test",
"version": "1.0",
"manifest_version": 2,
"background": {"scripts":["script.js"]},
"permissions": [
"alarms",
"webRequest",
"*://www.google.com/*",
"webRequestBlocking"
]
}
script.js:
var host = "https://www.facebook.com/"
chrome.alarms.onAlarm.addListener(function(alarm){
return {redirectUrl: host}
})
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return chrome.alarms.create("redirect", {when: Date.now() + 5000})
},{
urls: [
"*://www.google.com/*"
],
types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
["blocking"]
)
重定向代码来自This Question, 使用计时器的代码取自This Question
编辑:谢谢Xan的答案
的manifest.json
{
"name": "Google",
"description": "Test",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [{
"matches": ["*://www.google.com/*"],
"js": ["script.js"]
}]
}
script.js(使用Date.now()修改setTimeout以获得正确的等待)
setTimeout(function() {
window.location = "https://www.facebook.com/"
}, 5000)
答案 0 :(得分:2)
那不行,但不管你想要的是什么。
chrome.webRequest.onBeforeRequest
指的是在网络请求被发送之前决定什么。
首先,它会停止等待决策的网络请求。因此,它不允许重定向以异步方式发生 - 您必须立即决定,而不是在5秒内。
其次,看起来您希望加载页面,但在5秒内重定向到其他地方 - 不要保持“加载”5秒钟。然后webRequest
是错误的地方。
你想要的是一个content script,一段JS代码,它将在加载后在选项卡的上下文中执行。
我会将清单字段留给读者练习,这段代码将起作用:
// Content script
setTimeout(function() {
window.location = "https://example.com/";
}, 5000);