2017-03-04 15 views
0

background.js:chrome.webRequest APIを使用してURLをリダイレクトする方法

chrome.webRequest.onBeforeRequest.addListener(function (details) { 
    console.log(details.url); 
    window.location.href = 'http://time.com/'; 
}, {urls: ['<all_urls>']}, []); 

私はウェブサイトを訪問するとき、それはコンソールですべての要求を示しているが、それはtime.comにサイトをリダイレクトしません。

追加情報:

私はここでバックグラウンド・コンソールにエラーが発生しました:

Error in event handler for webRequest.onHeadersReceived/1: ReferenceError: url is not defined at chrome.webRequest.onHeadersReceived.addListener.urls (chrome-extension://hkiajgmcjicgampfdeiiacbojlmdokob/background.js:5:8) 

をそして...この場合にはtime.comからはconsole.logとの要求を参照してくださいする方法はありますか?

私はリクエストを見たいので、Chromeウィンドウでリダイレクトする必要はありません。 私が必要とするのは、バックグラウンドコンソールで見ることだけです。

+1

'does not work' ...何が起こるのですか?間違いはありますか?つまり、 'background.js'は' window'を持っていません。 –

答えて

3

webRequest APIは、リダイレクト機能を提供します。

manifest.jsonをしてwebRequestBlockingwebRequest、およびホストのパーミッションを追加します。リダイレクトするURLのページ自体(main_frame)と、アイフレーム(sub_frame)用

"permissions" : [ 
    "webRequest", 
    "webRequestBlocking", 
    "http://www.example.com/*" /* or <all_urls> */ 
] 

インターセプト要求を(それらを宣言する必要があります

chrome.webRequest.onBeforeRequest.addListener(function(details) { 
    console.log(details.url); 
    if (!details.url.startsWith('http://time.com/')) { 
     return {redirectUrl: 'http://time.com'}; 
    } 
}, { 
    urls: ['http://www.example.com/*'], // or <all_urls> 
    types: ['main_frame', 'sub_frame'], 
}, [ 
    'blocking' 
]); 

背景コンソール、open it on chrome://extensions pageを表示するにはblockingリスナーで上記に示した「権限」)です。

また、ドキュメント内のextensions architectureの記事を必ず読んでください。バックグラウンドページは、独自のコンテキストとchrome-extension:// blablabla /別のURLにナビゲートできないbackground.html

関連する問題