特定の URL にアクセスするときに拡張機能でクロムをリダイレクトするにはどうすればよいですか?
例:訪問したときにhttp://yahoo.com/
リダイレクトしたいhttp://google.com/
注:この質問の以前のバージョンでは、特定の URL にアクセスしたときにタブを自動的にリダイレクトする Google chrome 拡張機能があるかどうかを尋ねました。したがって、以下の (現在 2 つの) 回答は、さまざまな質問に対応しています。
特定の URL にアクセスするときに拡張機能でクロムをリダイレクトするにはどうすればよいですか?
例:訪問したときにhttp://yahoo.com/
リダイレクトしたいhttp://google.com/
注:この質問の以前のバージョンでは、特定の URL にアクセスしたときにタブを自動的にリダイレクトする Google chrome 拡張機能があるかどうかを尋ねました。したがって、以下の (現在 2 つの) 回答は、さまざまな質問に対応しています。
多くの選択肢があり、一方は他方よりも複雑です。
webRequest
API、具体的にはonBeforeRequest
event。(さらに良いことに、今後のdeclarativeWebRequest
API )。location.replace('http://example.com')
します。tabs
API 。onUpdated
このイベントを使用して、ページの場所が変更されたことを検出し、chrome.tabs.update
URL を変更します。ただし、無限ループは避けてください。ページが要求される前にアクティブ化されるため、最初のものが最適です。2 番目のものは、要求が満たされた後、ページがレンダリングされる前 ( "run_at":"document_start"
) またはレンダリングされた後( ) にアクティブ化できます"run_at":"document_end"
。完全を期すために最後のオプションについて言及しましたが、他のオプションの方がはるかに優れているため、使用しないでください。
これは、API を使用した例webRequest
です。これは、主要なホストが ISP によって停止された場合でも、Pirate bay のページを閲覧できるようにする単純な拡張機能です (URL の実際のリストははるかに長くなりますが、念のため省略しました)。例の)。URL 形式の説明については、一致パターン
を
参照してください。
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"]
);