ファビコンを取得しています

ファビコン(「お気に入りアイコン」の略)は、ブラウザのアドレスバーに表示される小さなアイコンです。通常、ファビコンはウェブサイトの識別と区別に使用されます。この記事では、Manifest V3 拡張機能でウェブサイトのファビコンを取得する方法について説明します。

ウェブサイトのファビコンへのアクセス

ウェブサイトのファビコンを取得するには、次の URL を作成する必要があります。

chrome-extension://EXTENSION_ID/_favicon/?pageUrl=EXAMPLE_URL&size=FAV_SIZE
EXTENSION_ID
拡張機能の ID。
EXAMPLE_URL
ファビコンのウェブサイトの URL。
FAV_SIZE
ファビコンのサイズ。最も一般的なサイズは 16 x 16 ピクセルです。

Chrome 拡張機能でこの URL を作成する手順は次のとおりです。

ステップ 1: マニフェストを更新する

まず、マニフェスト"favicon" 権限をリクエストする必要があります。

{
  "name": "Favicon API in a popup",
  "manifest_version": 3,
  ...
  "permissions": ["favicon"],
  ...
}

また、コンテンツ スクリプトでファビコンを取得する場合は、"_favicon/*" フォルダをウェブからアクセス可能なリソースとして宣言する必要があります。次に例を示します。

{
  "name": "Favicon API in content scripts",
  "manifest_version": 3,
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ],
  "permissions": ["favicon"],
  "web_accessible_resources": [
    {
      "resources": ["_favicon/*"],
      "matches": ["<all_urls>"],
      "extension_ids": ["*"]
    }
  ]
  ...
}

ステップ 2: URL を作成する

次の関数は、runtime.getURL() を使用して、"_favicon/" フォルダを指す完全修飾 URL を作成します。次に、URL を表す複数のクエリ パラメータを含む新しい文字列を返します。最後に、この拡張機能によって本文に画像が追加されます。

function faviconURL(u) {
  const url = new URL(chrome.runtime.getURL("/_favicon/"));
  url.searchParams.set("pageUrl", u);
  url.searchParams.set("size", "32");
  return url.toString();
}

const img = document.createElement('img');
img.src = faviconURL("https://www.google.com") 
document.body.appendChild(img);

次の例は、ランダムな拡張機能 ID を含む www.google.com 32 ピクセルのファビコン URL です。

chrome-extension://eghkbfdcoeikaepkldhfgphlaiojonpc/_favicon/?pageUrl=https%3A%2F%2Fwww.google.com&size=32

拡張機能の例

chrome-extension-samples リポジトリには、ファビコンのサンプルが 2 つあります。