2017-01-30 10 views
-1

ロードするページごとにすべてのリクエストを記録しようとしています。ここにはmanifest.jsonbackground.jsのファイルがあります。現在のページのURLをクロムエクステンションで取得する

manifest.json:

{ 
    "name": "Requests", 
    "version": "1.0", 
    "description": "Log Requests", 
    "permissions": ["webRequest", 
    "webRequestBlocking", 
    "tabs", 
    "<all_urls>"], 
    "background": { 
    "scripts": ["background.js"] 
    }, 

    "manifest_version": 2 
} 

background.js:

var url = '' 

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){ 
    url = tabs[0].url; 
}); 

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

    console.log("Request for " + url + ': --> ' + info.url); 
    }, 
    // filters 
    { 
    urls: ["<all_urls>"] 
    }, 
    // extraInfoSpec 
    ["blocking"]); 

私が持っている問題は、background.js内部urlパラメータは、常に私はロードしていますページchrome://extension/どんなにが含まれていることです。なぜこれが起こっているのか分かりません。私はwindow.locationを使って私に現在のURLを与えようとしましたが、同じ値を返しています。誰も助けてくれませんか?あなたはbackground.jsので

chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT}, 
    function(tabs){ 
     alert(tabs[0].url); 
    } 
); 
+1

なぜそれが変更されると思いますか? 'url'は一度だけ設定し、決して変更しないでください。だから、変わることはありません。 – Makyen

+0

@Makyen答えのMakyenをありがとう。私の理解は、新しいリンクがロードされるたびに 'chrome.tabs.query'が起動されるということでした。 Iは、(関数(詳細){; \t \t \t \t URL = details.url}); chrome.webNavigation.onBeforeNavigate.addListener 'を介してそれを行うことを試みた'が、正しいURLを毎回返さないthatsの。他に提案はありますか? – QPTR

+0

'onBeforeRequest'の' callback'の中に 'chrome.tabs.query'メソッドを入れ子にするだけでした。私はこのアプローチが正しいことを願っています。 – QPTR

答えて

0

にchrome.windows.WINDOW_ID_CURRENT機能によって、各要求のURLを取得することができます

-2

、ここで機能するソリューションです。私が唯一行ったのは、chrome.tabs.queryメソッドをonBeforeRequestのコールバックの中に入れて、リクエストが受信されるたびにトリガーされるようにすることでした(したがってURLも更新されます)。

var url = '' 

var callbackOnRequest = function(info) { 

    chrome.tabs.query({currentWindow: true, active: true}, function(tabs){ 
     if (tabs[0] != undefined){ 
       url = tabs[0].url; 
      } 

    }); 

    console.log("Request for " + url + ': --> ' + info.url); 
} 
var filters = { 
    urls: ["<all_urls>"] 
}; 

var extraInfoSpec = ["blocking"]; 

chrome.webRequest.onBeforeRequest.addListener(callbackOnRequest, filters, extraInfoSpec); 
+0

これは常にバックグラウンドページの場所です。 –

関連する問題