ロードするページごとにすべてのリクエストを記録しようとしています。ここにはmanifest.json
とbackground.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);
}
);
なぜそれが変更されると思いますか? 'url'は一度だけ設定し、決して変更しないでください。だから、変わることはありません。 – Makyen
@Makyen答えのMakyenをありがとう。私の理解は、新しいリンクがロードされるたびに 'chrome.tabs.query'が起動されるということでした。 Iは、(関数(詳細){; \t \t \t \t URL = details.url}); chrome.webNavigation.onBeforeNavigate.addListener 'を介してそれを行うことを試みた'が、正しいURLを毎回返さないthatsの。他に提案はありますか? – QPTR
'onBeforeRequest'の' callback'の中に 'chrome.tabs.query'メソッドを入れ子にするだけでした。私はこのアプローチが正しいことを願っています。 – QPTR