An English version of this page is also available.
注意:このページは旧バージョンの情報を保持するための歴史的ドキュメントとして残されています。最新の情報はMozilla Add-onsの配布ページおよびGitHubリポジトリを参照して下さい。
セキュリティに関する重要なお知らせ:MTH 3.0.7よりも以前のMTH 2.xおよびMTH 3.xのすべてのバージョンにおいて、他のアドオン向けのAPIを介した情報漏洩の問題がありました(WebExtensions APIでそれらの情報にアクセスするために必要な権限を持たない信頼できないアドオンに対してまで、MTHのAPI経由でプライバシーに関わるタブの情報やプライベートウィンドウのタブの情報が意図せず露出してしまっていました)。MTH 3.0.7またはそれ以降のバージョンへの更新を強く推奨します。詳細な情報も併せて参照して下さい。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
複数のタブをまとめて閉じたり再読み込みしたりできるようにする拡張機能です。パネル内の項目の上でドラッグするとタブが選択され、ポップアップメニューからその後の操作を選択できます。また、Ctrl-クリックなどで個別に選択した後、右クリックメニューから操作を行うことも可能です。(感覚としては、Excelのセルの選択の操作あたりの感覚をイメージしてください。)クローズボックスの部分をドラッグするとそれらのタブをまとめて閉じる事もできます。
おまけとして、「URLをコピー」「タブをファイルに保存」などの機能もあります。
また、このアドオンはツリー型タブと連携して動作します。両方のアドオンをインストールすると、ツリー型タブのサイドバー上でタブをドラッグ操作により選択できるようになります。(選択操作を開始するにはタブの上でボタンを長押ししてからドラッグして下さい。すぐにドラッグした場合、通常通りのタブの移動となります。)
この拡張機能は、タブブラウザ拡張の機能をFirefox 2向けに再実装する試みの一環として開発しています。
不具合に遭遇した場合は、まずよくある質問をご覧下さい。それでも解決方法が見つからない場合の障害報告はGitHubのイシュートラッカーにお願いします。
バージョン0.xは以下の言語パックを内蔵しています。
ここに記載されている情報は旧バージョンに関してのものです。最新の情報はMozilla Add-onsのサイトをご覧下さい。
タブの選択と操作。左ドラッグでおもむろに選択してコマンド実行、という感じです。なお、今までのようにタブをドラッグ&ドロップで並べ替えたい場合は、タブのアイコン部分をドラッグしてください。
タブをドラッグするだけで選択されてしまうのが嫌だという場合は、設定で挙動を変更してください。ドラッグ時の挙動は「タブの移動(Firefox標準)」「選択(マルチプルタブハンドラ標準)」「タブの切り替え(iRider互換)」の3択で選べます。
タブの選択操作は、感覚的にはExcelのセルの選択に近いです。Ctrl-クリックもShift-クリックも使えます。
クローズボックスの選択。タブのクローズボックスの上でドラッグ開始すると、クローズボックスだけを選択するモードになります。この場合、ボタンを放したらすぐに選択されたタブを閉じることができます。(iRider互換)
今のタブより右のタブ・左のタブをまとめて閉じる機能もあります。タブのコンテキストメニューから実行してください。
バージョン0.4以降で、クリップボードにタブのURIをコピーする時の形式を自由に追加できるようになりました。以下は登録例です。
<li><a href="%URL_HTMLIFIED%">%TITLE_HTMLIFIED%</a></li>
[%TITLE_HTMLIFIED%](%URL_HTMLIFIED% "%TITLE_HTMLIFIED%")
* [%TITLE_HTMLIFIED%](%URL_HTMLIFIED% "%TITLE_HTMLIFIED%")
((<%TITLE_HTMLIFIED%|URL:%URL_HTMLIFIED%>))
* ((<%TITLE_HTMLIFIED%|URL:%URL_HTMLIFIED%>))
[url=%URL%]%TITLE%[/url]
[list][url=%URL%]%TITLE%[/url][/list]
ここに記載されている情報は旧バージョンに関してのものです。最新の情報はGitHubのWikiのAPIドキュメント(英語)をご覧下さい。
※すべての処理はtabbrowser要素一つを単位として行われる。複数のtabbrowser要素に対して処理を行いたい場合、それぞれのtabbrowser要素に対して個別に処理を行う必要がある。
MultipleTabService.closeTabs(in Array aTabs)
MultipleTabService.reloadTabs(in Array aTabs)
MultipleTabService.addBookmarkFor(in Array aTabs)
MultipleTabService.duplicateTabs(in Array aTabs)
MultipleTabService.splitWindowFromTabs(in Array aTabs)
MultipleTabService.hasSelection([in Node aTabBrowser])
MultipleTabService.isSelected(in Node aTab)
MultipleTabService.setSelection(in Node aTab, in boolean aNewSelectionState)
MultipleTabService.toggleSelection(in Node aTab)
MultipleTabService.clearSelection([in Node aTabBrowser])
MultipleTabService.getSelectedTabs([in Node aTabBrowser])
MultipleTabService.getLeftTabsOf(in Node aTab)
MultipleTabService.getRightTabsOf(in Node aTab)
マルチプルタブハンドラは、選択された複数のタブをまとめてドラッグ&ドロップする機能を持っています。ドロップ操作の受け入れ側でマルチプルタブハンドラのAPIを使うことによって、複数のタブをドロップされたときの挙動を定義することができます。
バージョン0.6以降では、HTML5のドラッグ&ドロップイベントのdata transfer経由でドラッグ中の選択されたタブを取得できます。この場合、0番目のデータはタブの並び順で左端のタブではなく、ドラッグ操作を開始したタブとなります。
onDrop : function(aEvent) {
var tabs = [];
var dt = aEvent.dataTransfer;
for (let i = 0, maxi = dt.mozItemCount; i < maxi; i++) {
tabs.push(dt.mozGetDataAt(TAB_DROP_TYPE, i));
}
tabs.sort(function(aA, aB) { return aA._tPos - aB._tPos; });
...
},
ユーティリティメソッドとして、MultipleTabService.getSelectedTabs()
にドロップ時のイベントオブジェクトを渡しても同じ結果を得られます。
onDrop : function(aEvent) {
var tabs = MultipleTabService.getSelectedTabs(aEvent);
},
また、バージョン0.5以前と互換の以下のAPIも利用できます。
HTML5のドラッグ&ドロップイベントを使わない場合、ドラッグされたタブをMultipleTabService.getBundledTabsOf()
メソッドに渡すと、もしそのタブと一緒に他のタブも選択されていたら、選択されたタブ全体の配列を返します。タブが選択されていなかった場合や、タブ以外の物を渡した場合は、空の配列が返ります。以下は、複数のタブを選択してドラッグ&ドロップしたときに、ドロップされたすべてのタブのURIを表示する処理の例です。
onDrop : function(aEvent, aData, aSession) {
var tab = aSession.sourceNode;
if ('MultipleTabService' in window) {
var tabs = MultipleTabService.getBundledTabsOf(tab);
if (tabs.length) {
// 複数のタブがドロップされたときは、
// ドロップされたタブすべてのURIを表示
alert(
tabs.map(function(aTab) {
return aTab.linkedBrowser.currentURI.spec;
}).join('\n')
);
return;
}
}
// 通常の処理
alert(tab.linkedBrowser.currentURI.spec);
},
MultipleTabService.getBundledTabsOf()
メソッドの2つめの引数としてオブジェクトを渡すと、ドロップされたタブが含まれているtabbrowser要素と、そのtabbrowser要素が含まれているウィンドウ(DOMWindow)を取得できます。以下は、他のウィンドウからタブをドラッグ&ドロップされた時だけ元のウィンドウのタブを閉じる処理の例です。
onDrop : function(aEvent, aData, aSession) {
var tab = aSession.sourceNode;
if ('MultipleTabService' in window) {
var info = {};
var tabs = MultipleTabService.getBundledTabsOf(tab, info);
if (tabs.length) {
var uris = tabs.map(function(aTab) {
return aTab.linkedBrowser.currentURI.spec;
}).join('\n');
if (info.sourceWindow != window)
tabs.forEach(function(aTab) {
info.sourceBrowser.removeTab(aTab);
});
}
...
return;
}
}
...
},
複数のタブを選択した状態でそのうちの1つをドラッグ&ドロップすると、通常はマルチプルタブハンドラ自身がドラッグ操作の開始を検知して、複数のタブの移動のための処理を行います。他のアドオンからマルチプルタブハンドラのこの挙動をキャンセルしたい場合(そのアドオンが複数のタブのドラッグ&ドロップを扱うための仕組みを持っている場合など)は、マルチプルタブハンドラが発行するMultipleTabHandler:TabsDragStartイベントをキャンセルしてください。
var listener = function function(aEvent) {
switch (aEvent.type) {
case "MultipleTabHandler:TabsDragStart":
return aEvent.preventDefault();
case "dragstart":
// 複数のタブのドラッグ&ドロップを開始するための任意の処理
return;
}
};
gBrowser.mTabContainer.addEventListener(
"MultipleTabHandler:TabsDragStart", listener, false);
/* Firefox自身によるタブのドラッグ開始処理よりも先に
処理を行わないといけないので、キャプチャリングフェーズで
イベントを監視する。 */
gBrowser.mTabContainer.addEventListener(
"dragstart", listener, true);
ユーザースタイルシートや拡張機能などによって、タブバーが画面の横に縦型で表示されている場合のために、label-horizontal
属性とlabel-vertical
属性を使って、メニュー項目に特別なラベルを指定することができます。
label-horizontal
属性の値は、タブが通常の水平表示になっている場合のラベルとして使われます。label-vertical
属性の値は、タブが何らかのカスタマイズによって垂直表示(縦型)になっている場合のラベルとして使われます。
<menuitem id="context-item-feature4"
label-horizontal="Feature 4, 左のタブを処理する"
label-vertical="Feature 4, 上のタブを処理する"/>
ユーザ設定として extensions.multipletab.show.メニュー項目の要素のid
という名前をキーにした真偽値の設定を作成し、値をfalse
にすることで、メニュー項目を一時的に非表示にすることができます。
他の拡張機能などによって組み込まれたメニュー項目の表示・非表示を設定するためのUIは、この拡張機能には含まれていません。GUIで表示状態を変更できるようにするには、独自の設定ダイアログを設けるか、 chrome://multipletab/content/config.xul にオーバーレイで項目を組み込んでください。
また、メニュー項目にmultipletab-available
属性およびmultipletab-enabled
属性を設定しておくことで、メニューが開かれる時に動的に判断を行って、メニュー項目を隠したり無効にしたりすることもできます。これらの属性の値として記述された内容はJavaScriptの式として評価され、multipletab-available
の評価結果が真であれば項目が表示され、偽であれば非表示となります。また、multipletab-enabled
の評価結果が真であれば項目は有効、偽であれば無効となります。
<menuitem id="context-item-myservice-feature"
label="タブが3つ以上選択されている時のための機能"
multipletab-available="MyService.available()"
multipletab-enabled="selectedTabs.length > 3"/>
この例であれば、MyService.available()
の返り値が真の時だけ項目が表示され、且つ、選択されているタブの数が3つ以上の時だけ項目を選択できるようになります。なお、これらの属性値に記述する式では以下の変数を利用できます。
tabbrowser
gBrowser
に等しい。tabs
Array.slice(gBrowser.mTabContainer.childNodes)
に等しい。selectedTabs
MultipleTabService.getSelectedTabs(gBrowser)
に等しい。項目の表示・非表示の最終的な判定は、extensions.multipletab.show.メニュー項目の要素のid
の設定値(未定義の場合はtrue
)とmultipletab-available
属性値の評価結果(未定義の場合は真)の両方を元にして行います。設定値と属性値の評価結果の両方共が真の場合のみ、項目が表示されます。言い換えると、どちらか一方でも偽であれば項目は非表示となります。
zh_CN
言語リソース更新(by NightSharp, thanks!)zh_CN
言語リソース更新(by NightSharp, thanks!)zh_CN
言語リソース更新(by NightSharp, thanks!)title
, url
, favIconUrl
および cookieStoreId
を隠すようにしたtab-selection-command
のメッセージにウィンドウのIDを示すプロパティ windowId
を追加したremove-all-selected-tab-commands
を追加したsvg.context-properties.content.enabled
がtrue
に設定されていて意図的に有効化された場合にのみ、テーマの配色をツールバーのアイコンに反映するようにしたabout:
ページなどのスクリプト実行が禁止されているタブしかない時でも安全且つ成功裏に「クリップボードにコピー」を実行できるようにした)%TST_INDENT(...)%
について、ツリーが部分的に選択されている場合はインデントを反映しないようにした%TST_INDENT(...)%
を追加%20
に置換するようにした(by Infocatcher. Thanks!)ru
ロケール更新(by Infocatcher. Thanks!)ru
ロケール更新(by Netanyahu, thanks!)ru
ロケール更新(by Infocatcher, thanks!)extensions.multipletab.tabdrag.delay
の設定が機能しなくなっていたのを修正(By Infocatcher. Thanks!)dom.compartment_per_addon
=true
に設定した場合でも動作するように暫定的に対処-1
="browser.tabs.warnOnClose"を使用, 0
=警告しない, 1
=警告する)%AUTHOR%
, %AUTHOR_HTMLIFIED%
, %DESCRIPTION%
, %DESCRIPTION_HTMLIFIED%
, %KEYWORDS%
, %KEYWORDS_HTMLIFIED%
getData()
で情報を取得できるようにしたaEvent.getData(プロパティ名)
でプロパティの内容を参照するようにしてください。)MultipleTabHandlerTabsClosing
イベント、閉じた直後に MultipleTabHandlerTabsClosed
イベントを発行するようにしたmultipletab-insertbefore
に加えて multipletab-insertafter
も利用できるようにしたmultipletab-insertbefore
と multipletab-insertafter
でXPath式を利用できるようにした