Chrome拡張でURLを取得する


TL;DR

chrome.tabs.query({ active: true, currentWindow: true }, (e) => {
      const url = e[0].url;
      console.log(url);
    });

location.hrefじゃだめなのか

background pagepopup 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