ガジェカツ~在宅SEのガジェット活動ブログ~

在宅SEな筆者がガジェットネタやIT、プログラミングネタを書き連ねるブログ

タブの右クリックメニューに簡単にメニューを追加出来るuserChrome.jsスクリプトを作ってみた。

ということで第三弾は「タブのコンテキストメニューに”タブのタイトルを変更”するメニューを追加する」だったはずなのですが、気がつけばもっと便利な物が出来ていました!
その名もTabContextMenuTools。
この記事のタイトル通りにタブのコンテキストメニューに簡単にメニューを追加することが出来るUserScriptです。

TabContextMenuTools.uc.jsをダウンロード

※今回から自前で借りたアプロダに上げることにしました、今まで公開したもののダウンロード先も全てアプロダに書き換える予定です。

主な利用方法

基本的にダウンロードしてuserscriptのフォルダに入れただけじゃ、ただ「タブのコンテキストメニューに”タブのタイトルを変更”するメニューを追加する」だけです。
ですが、ある程度Firefoxの内部が分かっている方 or userChrome.jsでのマウスジェスチャーでコマンドの追加が出来る方ならば色々な機能を追加することが出来るでしょう。
例えば「他のタブを全て閉じる」や「右(左)のタブを全て閉じる」や「タブのクローン」を作る等々の機能が簡単に追加することが出来ます。

追加方法

スクリプトの約11行目から約23行目までがメニューを追加する為の部分です。

	var tabAddMenu = [
		{//「このタブのタイトルを変更」 その名前の通りタブの名前を変更します。
			label : "\u3053\u306E\u30BF\u30D6\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5909\u66F4",
			command : function () {
				var tab = document.popupNode;
				var Tdocument = gBrowser.getBrowserForTab(tab).contentWindow.document;
				title = window.prompt("\u65b0\u3057\u3044\u30bf\u30a4\u30c8\u30eb\u3092\u6307\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002\u7a7a\u306b\u3059\u308b\u3068\u5909\u66f4\u3057\u307e\u305b\u3093\u3002", "");
				if (title!=null && title!="") {
					Tdocument.title = title;
				}
			},
		},
	]

もし、「全てのタブを閉じる」メニューを追加したいのならば以下のように追加することが出来ます。

	var tabAddMenu = [
		{//「このタブのタイトルを変更」 その名前の通りタブの名前を変更します。
			label : "\u3053\u306E\u30BF\u30D6\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5909\u66F4",
			command : function () {
				var tab = document.popupNode;
				var Tdocument = gBrowser.getBrowserForTab(tab).contentWindow.document;
				title = window.prompt("\u65b0\u3057\u3044\u30bf\u30a4\u30c8\u30eb\u3092\u6307\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002\u7a7a\u306b\u3059\u308b\u3068\u5909\u66f4\u3057\u307e\u305b\u3093\u3002", "");
				if (title!=null && title!="") {
					Tdocument.title = title;
				}
			},
		},
		//
		{//「全てのタブを閉じる」 
			label : "\u5168\u3066\u306E\u30BF\u30D6\u3092\u9589\u3058\u308B",
			command : function () {
				gBrowser.removeAllTabsBut(gBrowser.addTab("about:blank"));
			},
		},

	]

詳細な仕様

tabAddMenuは以下の要素(でいいのかな?)で構成されています。

label その名の通り、コンテキストメニューでの表示名です。区切りにしたい時は「separator」とすれば区切りになります。ちなみにユニコードエスケープ(ここ参照)必須です。
command 実行した時のコマンドを引数なしの無名関数で書いて下さい。

Topic

  • documentやlocationを触りたい。
    • gBrowser.getBrowserForTab(document.popupNode).contentWindow.documentのように触れます。
  • どこが便利なの?
    • あれですよ、タブのコンテキストメニューにメニュー追加する度に毎回ちゃんとスクリプトを書くのがめんどくさいでしょう?
    • だから、こういう感じに簡単に追加出来るようにしました。