web-dev-qa-db-ja.com

プログラムでchrome extensionポップアップウィンドウをbackground.htmlから開く方法

前もって感謝します!

私が達成したいのは、拡張機能によってWebページで特別なタグが検出されたときにポップアップウィンドウを開くことです。しばらく検索したところ、ユーザーが拡張機能をクリックしたときにのみポップアップを開くことができるようです。本当ですか?

または、ブラウザで拡張機能のアイコンの場所を取得できますか?ウィンドウを描画して拡張アイコンの下に表示し、ポップアップウィンドウのように見せることができます。

25
Dahe80

ユーザーがクリックせずに拡張ウィンドウを開くことはできません...ただし、次のようにして、拡張ポップアップページを新しいタブで開くことができます。

1)マニフェストファイルに バックグラウンドページ を設定します...

"background_page": "background.html",

これは、特別なタグが検出されたかどうかを確認するためにコードを実行する場所です...バックグラウンドページは常にバックグラウンドでコードを実行でき、繰り返しループを設定して、変数の条件がすべてtrueであるかどうかを確認する必要があります。しばしば...

2)マニフェストファイルで タブ権限 を有効にします...

"permissions": [ "tabs" ],

この権限はステップ3で必要です(バックグラウンドページで新しいタブを開くことができます)

3)バックグラウンドページで、 create を呼び出して、拡張ポップアップURLをポイントします。

if(condition == true){
  chrome.tabs.create({url:"popup.html"});
}
12
David

この男 反対の効果が必要で、ポップアップウィンドウを開かないようにすることはできません。彼のコードを見て、ポップアップページを開いてください;)

11

ブラウザアクションの偽のクリックはできませんが、通常のウィンドウポップアップと同じようにバックグラウンドスクリプトからポップアップページを開くことができ、期待どおりに動作します。たとえば、ブラウザアクションのhtmlページは「popup.html」です。

window.open("popup.html", "extension_popup", "width=300,height=400,status=no,scrollbars=yes,resizable=no");

注:バックグラウンドスクリプト(イベントページ)からのみ呼び出すことができます。したがって、バックグラウンドスクリプトをマニフェストファイルに登録し、ポップアップを開くイベントハンドラーを追加する必要があります。イベントページの詳細については、こちらをご覧ください https://developer.chrome.com/extensions/event_pages

8
devza

ポップアップとは、ブラウザアクションのポップアップを意味する場合、それは正しいです。プログラムで開く方法はありません。

コンテンツスクリプト を使用して、必要に応じてポップアップから必要なものを直接ページに埋め込むことができます。これが最善の解決策になると思います。

ポップアップに特別なものが含まれていない場合は、おそらく desktop notifications で十分です。

新しいウィンドウを作成し、それをURLバーの下に配置するのはかなり厄介なソリューションであり、ユーザーフレンドリーではありません。

5
serg