0
0

More than 1 year has passed since last update.

[Chrome拡張] ページにアラートを表示する方法

Posted at

background処理等で監視した結果をユーザーに気づいてもらいやすくするために
作業中のタブにアラートを表示する方法をご紹介します。

content scriptsにメッセージを送ってアラートを表示させる方法もありますが、
この方法だとChrome拡張インストール後にタブ更新を行わなくても利用できます。

新しく作成したchrome拡張を公開しました。
そこで使用した技術を備忘録として残し共有できればと思い、記事を書いています。
この記事ではアラートを表示させていますが、Chrome拡張ではオリジナルのダイアログを表示させています。

ちなみに、こちらがそのChrome拡張の記事です

こちらは別のChrome拡張です。合わせてどうぞ

用意するファイル

root/
  ├ manifest.json
  ├ option.html
  └ js/
        ├ option.js
        ├ background.js
     └ jquery-3.5.1.min.js

option.html

アラートに表示させるメッセージをinput#messageに設定します。

<!DOCTYPE HTML>
<html lang="ja">
  <head>
    <meta charset="utf-8" />
    <title>アラートテスト</title>
    <script src="js/jquery-3.5.1.min.js"></script>
    <script src="js/option.js"></script>
  </head>
  <body>
    <input id="message"></div>
    <button id="button">設定</button>
  </body>
</html>

option.js

ボタンが押されたらstorageにメッセージを格納します。

$(document).on("click","#button",function(){
  chrome.storage.sync.set({message:$("#message").val()});
});

background.js

タブがアクティブになったとき、タブが更新された時に
chrome.scripting.executeScriptを呼び出しています。
 args: functionで実行される関数に引数を渡します。
 function: タブ内で実行する関数を指定します。
      ここでは、上記argsの引数を渡してalert()を呼び出しています。

function alert_test(tabId){
  chrome.storage.sync.get(null, function(value) {
  	if(!value.message)	return;

  	chrome.scripting.executeScript({
  		target: {tabId: tabId},
  		args: [value.message],
  		function: function(args){
  			alert(args);
  		}
  	});
  });
};
//タブがアクティブになった時
chrome.tabs.onActivated.addListener(function(info){
  alert_test(info.tabId);
});
//タブが読み込まれた時
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
  if (changeInfo.status==="complete") { //タブの読み込み完了
    alert_test(tabId);
  }
});

manifest.json

permissionsには、storageとscriptingを指定します。
host_permissionsには、全てのタブにアラートを表示させたいのでこう指定しています。
opitons_pageには、オプションを押された時に表示するHTMLページを指定します。
 ※オプションの開き方(一例):
   Chrome拡張のアイコンを右クリック -> メニューの「オプション」をクリック

{
  "name": "アラートテスト",
  "version": "1.00",
  "description": "アラートテスト",
  "permissions": ["storage","scripting"],
  "host_permissions": ["https://*/*"],
  "options_page": "option.html",
  "background": {
    "service_worker": "js/background.js"
  },
  "action": {
    "default_icon": {
      "16": "images/icon.png"
    }
  },
  "icons": {
    "48": "images/icon.png"
  },
  "manifest_version": 3
}

実行結果

1.アラートが表示されていない状態で。。。
  
2.メッセージを入力して、設定ボタンを押下。

3.先ほどのタブを開いてみると。。。アラートが表示された!
  
おしまい。。

その他のChrome拡張の実装方法

以下はこれまでに投稿したChrome拡張の記事です。用途に応じてご覧ください。
[Chrome拡張] ツールバーのアイコンをクリックしてHTMLページを表示する方法
[Chrome拡張] Chrome拡張メニューからページを操作する方法
[Chrome拡張] Webページ(content scripts)からChrome拡張画面へメッセージを送る方法
[Chrome拡張] Chrome拡張画面でタイマー(定期実行処理)を使用する方法
[Chrome拡張] Content Scriptsでタイマー(定期実行処理)を使用する方法
[Chrome拡張] Chrome拡張メニューからWebページを操作する方法
[Chrome拡張] Chrome拡張メニューからWebページを操作する方法(jQueryを使う)
[Chrome拡張] Chrome拡張メニューとWebページでやりとりする方法
[Chrome拡張] Chrome拡張メニューとWebページでやりとりする方法(Content Scriptsを使う)
[Chrome拡張] Chrome拡張メニューから開いていないWebページの情報を取得する方法
[Chrome拡張] ポップアップメニューを表示する方法
[Chrome拡張] ポップアップメニューからWebページを操作する方法
[Chrome拡張] ポップアップメニューからWebページを操作する方法(jQueryを使う)
[Chrome拡張] ポップアップメニューからWebページを操作する方法(スタイル変更)
[Chrome拡張] ストレージ(chrome.storage.local)を利用する方法
[Chrome拡張] オプションページを表示する方法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0