--- title: ポップアップ slug: Mozilla/Add-ons/WebExtensions/user_interface/Popups tags: - UI - User Interface - WebExtensions - popup translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Popups ---
{{AddonSidebar}}

ポップアップはツールバーボタンアドレスバーボタンに関連したダイアログです。

ユーザーがボタンをクリックした時、ポップアップが表示されます。ポップアップの外をクリックすると、ポップアップは閉じます。ポップアップは、そこで実行しているスクリプトから window.close() を呼ぶとプログラム的に閉じられます。しかし、拡張機能の JavaScript からプログラム的に開くことはできません。つまりユーザー操作への反応としてだけ開きます。

"_execute_browser_action""_execute_page_action" ショートカットを使って、ポップアップを開くキーボードショートカットを定義できます。manifest.json の commands キーの文書を見てください。

ポップアップを指定する

通常の Web ページと同じく、ポップアップは HTML ファイルで定義されます(ここに CSS や JavaScript も含めることが可能です)。 ただし、拡張機能が持つパーミッションの範囲で JavaScript から WebExtension API にアクセスできる点で通常のものとは異なります。

ポップアップの文書はポップアップが表示されるたびに読み込まれて、ポップアップが閉じるたびに開放されます。

HTML ファイルを拡張機能に入れるには、manifest.json内の browser_actionpage_action キーの "default_popup" にて指定します:

  "browser_action": {
    "default_icon": "icons/beasts-32.png",
    "default_title": "Beastify",
    "default_popup": "popup/choose_beast.html"
  }

ブラウザーの UI と統一感を持たせるスタイルシートをポップアップに組み込めるようになりました。これを利用するためには、browser_actionpage_action キーで "browser_style": true を指定してください。

ポップアップにおけるリソースの読み込み元や、eval() のように安全でない処理は Content Security Policy によって制限されます。詳細は Content Security Policy を参照してください。

ポップアップのデバッグ

ポップアップのマークアップと JavaScript をアドオンデバッガーを使ってデバッグできます。しかしポップアップの自動非表示を不可として、ポップアップの外をクリックした時に隠れてしまうのを防ぐ必要があります。ポップアップのデバッグを読んでください

ポップアップはその中身に合わせて自動的にリサイズされます。ブラウザーごとにこのアルゴリズムは違う場合があります。

Firefox では、サイズはポップアップが表示される直前に計算されて、最大で毎秒10回のDOM変形があります。strict モードの文書では、サイズは <body> 要素のレイアウトサイズに基いて計算されます。quirks モードでは、これは <html> 要素です。Firefox はその要素の好ましい幅を計算して、その幅にリフローして、縦のスクロールがないようにリサイズします。最大で 800x600 ピクセル の範囲でユーザーの画面にフィットさせます。(Firefox 60以前では680ピクセルまでとなります。)ユーザーが拡張機能のボタンをメニューに動かしたり、ツールバーからオーバーフローした場合、ポップアップはメニューのパネル内に出てきて、固定の幅となります。

Firefox Android 57 では、ポップアップは新規タブの通常ページとして表示されます。

Firefox のスタイルにマッチするポップアップのウェブページをデザインする方法は、Photon Design System の文書を見てください。

GitHub の webextensions-examples リポジトリには、ポップアップ付きブラウザーアクションを使う拡張機能の beastify の例があります。