TL;DR
chrome.tabs.query({ active: true, currentWindow: true }, (e) => {
const url = e[0].url;
console.log(url);
});
location.hrefじゃだめなのか
background pageやpopup viewは通常のタブとは違うコンテキストで動作しているので、location.href
では取得できません。location.href
で取得できるのは、chrome-extension://
から始まるURLのみです。
また、chrome.tabs.getCurrent(function callback)
で取得できそうな気もしますが、無理です。なぜなら対象とするtabが特定できないからです。
なので、chrome.tabs.query(object queryInfo, function callback)
の第一引数でタブを特定し、コールバック関数でtabの情報を取得します。なお、この関数では第一引数に当てはまった全てのタブをコールバック関数に渡してくれるので、e[0]
としています。
他にも多くのオプションがあるので、詳しくは公式のレファレンスを参照してください。
https://developer.chrome.com/extensions/tabs#method-query