Google Chrome Extensionを作ってみた-その6-

はじめに

今回はノティフィケーションについてです。デフォルト設定だと、画面の右下から出てくる小窓です。(windowsの場合)
例えば「Clip to Evernote」エクステンションだと、記事のクリップが終了した時にノティフィケーションを使ってそれをお知らせしてくれます。

作るもの

ツールバーボタンをクリックしたら、ノティフィケーションが出る様にしてみましょう。

作ってみる

まずは、manifest.jsonです。manifest.jsonでは、permissionsに"notifications"を指定しましょう。
コードは次の通りです。

{
	"name": "NotificationSample",
	"version": "1.0",
	"background_page": "background.html",
	"permissions": [
		"notifications"
	],
	"browser_action": {
		"default_icon": "icon_128.png",
		"name": "Notification"
	}
}

ノティフィケーションを出すのは簡単です。

webkitNotifications.createNotification({表示するアイコンのパス}, {タイトル}, {メッセージ});

このメソッドによって、notificationオブジェクトが返されるので、あとはshowメソッドで表示するだけです。
background.htmlは次の様にしました。

<html>
<head>
<script>
	chrome.browserAction.onClicked.addListener(
		function(tab){
				var notification = webkitNotifications.createNotification(
					chrome.extension.getURL("icon_128.png"), "クリック!!", "ツールバーボタンがクリックされました。");
				notification.show();
		}
	);
</script>
</head>
</html>

ツールバーアイコンをクリックすると、右下に小窓が開きます。

同時に開く小窓は4つで、それ以降はキューに溜まって、表示されている小窓が閉じると表示する仕様の様です。
数秒で閉じるようなインタラクションにする場合は、タイマーでcancelメソッドを呼ぶ様にすれば良いでしょう。
ちなみに、文字コードはBOM付きUTF-8じゃないと日本語は文字化けしました。

まとめ

  • webkitNotifications.createNotificationでnotificationオブジェクトを作る
  • showメソッドで表示(cancelメソッドで非表示)