如何在访问指定网址时重定向扩展程序中的chrome?
例如:当我访问http://yahoo.com/
时,我希望它重定向到http://google.com/
答案 0 :(得分:48)
有很多选择,一个比另一个更令人费解。
webRequest
API,特别是onBeforeRequest
event。 (更好的是,即将到来的declarativeWebRequest
API)。location.replace('http://example.com')
。tabs
API。使用onUpdated
event检测网页何时更改其位置,并使用chrome.tabs.update
更改其网址。尽管避免无限循环!第一个是最好的一个,因为它在页面被请求之前被激活。第二个可以在请求完成后,但在呈现页面之前("run_at":"document_start"
)或在呈现页面之后("run_at":"document_end"
)激活。我提到了最后一个完整性,但你不应该使用它,因为其他选项更好。
这是一个使用webRequest
API的示例,这是一个简单的扩展,允许我浏览Pirate托架上的页面,即使我的ISP取消了主要主机(实际的URL列表更长,但为了这个例子,我省略了它们
有关网址格式的说明,请参阅match patterns。
manifest.json
{
"name": "The Pirate Bay",
"description": "Redirect The Pirate Bay to a different host",
"version": "1.0",
"manifest_version": 2,
"background": {"scripts":["background.js"]},
"permissions": [
"webRequest",
"*://thepiratebay.se/*",
"*://www.thepiratebay.se/*",
"webRequestBlocking"
]
}
background.js
var host = "http://tpb.pirateparty.org.uk";
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return {redirectUrl: host + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]};
},
{
urls: [
"*://piratebay.se/*",
"*://www.piratebay.se/*"
],
types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
},
["blocking"]
);
答案 1 :(得分:18)
我知道我在游戏中有点迟到回答这个问题仍然我想为将来的读者回答这个问题。看看
目前,您可以为
设置规则获取更多理解的屏幕截图:
路线图中有很多东西需要像
那样被覆盖..还有更多。
PS:我创造了这个如果你没有找到这个有用的话你可以怪我:)
答案 2 :(得分:-1)
您可以使用我的扩展程序。转到“重写规则”选项卡,单击“ +”按钮并添加新的重写规则。请注意,重写规则实际上是RegEx,因此必须转义/等字符
https://chrome.google.com/webstore/detail/dev-helper/kbbgddcndpjnadfacanamniaomcohlcc?hl=en