現在の URL ではなく、最後にアクセスした URL を取得しています。(site.com にアクセスしてから site2.com に移動すると、取得する URL は「site.com」になり、site2.com を更新した後、正しい URL が取得されます。
ここの回答に基づいて:
Google Chrome Extension get page information
クロム拡張機能で現在の URL を表示する
私はこのコードを思いつきました:
マニフェスト.json
{
"manifest_version": 2,
"browser_action": {
"default_popup": "action.html"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"],
"run_at": "document_end"
}
],
"background": {
"scripts": ["background.js"]
},
"permissions": [
"tabs",
"unlimitedStorage",
]
}
content.js
chrome.extension.sendRequest({method: "getUrl"}, function(response) {
console.log(response.data);
});
background.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.method == "getUrl") {
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
currentUrl = tabs[0].url;
});
sendResponse({data: currentUrl});
}
else
sendResponse({}); // snub them.
});
また、このコードを content.js に直接配置しようとしましたが、エラーが発生し、background.js で URL が に設定されていchrome://extensions/
ます。
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
currentUrl = tabs[0].url;
});
これを行う正しい方法は何ですか?