2016-09-17 7 views
0

良い時間。onBeforeRequestとchrome.tabs.query(Chrome拡張機能)を使用して新しいURLにリダイレクト

ユーザーが入力した後にURLを変更する必要があるという興味深い考えがあります。

私のマニフェストファイル:

{ 
    "name": "The Pirate Bay_2", 
    "description": "Redirect The Pirate Bay to a different host", 
    "version": "1.0", 
    "manifest_version": 2, 

    "browser_action": { 
     "default_title": "Saving Studio generator", 
     "default_popup": "popup.html" 

    }, 
    "background": {"scripts":["redirect.js"]}, 
    "content_scripts": [ 
    { 
    "matches": ["http://*/*", "https://*/*"], 
    "js": ["background.js"] 
    } 
    ], 
    "permissions": 
    [ 
    "webRequest", 
    "https://www.amazon.com/", 
    "webRequestBlocking", 
    "tabs", 
    "activeTab" 
    ] 

} 

マイredirect.jsファイル:

var host = "https://2ch.hk/b/"; 

chrome.tabs.query({ 
    'active': true, 'currentWindow': true 
    }, function (tabs) { 
    var url = tabs[0].url; 
    host = host+url; 
    console.log(url); 
    }); 

chrome.webRequest.onBeforeRequest.addListener( 
    function(details) { 

     if (localStorage.check_box == "true"){ 
      console.log("start_1"); 

     return {redirectUrl: host}; 
     } 
    }, 
    { 
     urls: ["https://www.amazon.com/" ], 
     types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"] 
    }, 

    ["blocking"] 
); 

主なURL入っ取るする方法を、いくつかの正規表現パターンによってそれを変更することで、リターン結果のURLをリダイレクトしてください。どのようにすることができますか?挿入方法chrome.tabs.queryonBeforeRequestまたはこれは別の方法がありますか?

ビッグ感謝

+1

[Google Chrome拡張機能の同期呼び出し](https://stackoverflow.com/a/22054013)と[非同期メソッドのコールバック戻り値の待機方法](https://stackoverflow.com/a/)を参照してください。 15130214) – wOxxOm

答えて

0

私はまた、非同期であるクロムストレージAPIを使用して、同様の何かをしなければなりませんでした。私がしたことは、async関数のコールバックの中にWebリクエスト・リスナーを置くことでした。したがってあなたの場合:

私はこれをテストしていませんが、ストレージAPIを使用する必要があるときに行ったことですので、試してみてください。

関連する問題