]>
An English version of this page is also available.
Firefox 3 Hacks好評発売中。本書の1/3を占めてしまっている第3章でFUELやらPlacesデータベースのテーブル定義やらJavaScriptコードモジュールやらを解説しています。Software Design 2007年4月号第2特集の再録の拡張機能開発チュートリアルと併せてどうぞ。
この拡張機能は、ブラウザウィンドウの内容領域を自由に分割できるようにするものです。二つのページを見比べるとか、カレンダーを常にウィンドウの横に表示しておくとか、そんな感じの使い方ができます。
ブラウザは何回でも分割できます。また、分割されたブラウザの状態は保存され、次回起動時には自動的に復元されます。
この拡張機能はコンテントホルダーと同時には使えません。この拡張機能をインストールする前には、必ずコンテントホルダーを削除してください。
トラブルに出くわした場合、まずよくある質問をご覧下さい。それでも解決方法が見つからない場合の障害報告は掲示板かメールで。最新版のチェック用にRSSもあります。
以下の言語パックを内蔵しています。
ブラウザを分割した状態。分割後の領域は、小さなブラウザになります。ブラウザは以下の操作で分割できます。
ブラウザの内容領域の上下左右各辺の真ん中あたりでポップアップ表示されるボタンをクリックする
メモリと画面の広さが許す限り、どこまでも無限に分割できます。心ゆくまで分割しまくってください。
リンクやブックマークなどを、分割したブラウザにドロップすると、その領域に読み込みます。また、分割したブラウザのツールバー部分をドラッグすると、メイン領域でタブとして開いたり、ブックマークツールバーに登録したりもできます。
分割したブラウザは、右上のクローズボックスで閉じることができます。「ファイル」メニューの「分割したブラウザをすべて閉じる」を選択すると、元々のブラウザ部分を残して、分割された小さなブラウザを全部閉じます。
バージョン0.3以降では、タブブラウズにも対応しています。分割されたブラウザのツールバー上で右クリックして「新しいタブ」を選択したり、リンクを中クリックしたりすると、新しいタブを開きます。(ただし、タブブラウザ拡張やTab Mix Plusがインストールされている場合、この機能は利用できません。これらの拡張機能はタブブラウザがウィンドウの中に一つだけ存在していることを前提に設計されているため、分割されたブラウザ内のタブブラウザが正しく機能しなくなります。)
ブラウザの分割機能を応用して、現在のブラウザで開いているタブをまとめて並べて表示したり、分割されたブラウザを一つのブラウザにタブとしてまとめたりもできます。マルチプルタブハンドラをインストールすると、選択したタブだけを並べることもできるようになります。
SplitBrowser.activeBrowsergBrowserやgetBrowser()、document.getElementById('content')の代わりにこれを参照することで、分割されたブラウズ領域に対する操作を自由に行える。SplitBrowser.browsersSplitBrowser.collapseAllSubBrowsers()SplitBrowser.expandAllSubBrowsers()SplitBrowser.addSubBrowser(in String aURI, in Node aTargetSubBrowser, in Number aPosition)nullを渡す。SplitBrowser.POSITION_LEFTSplitBrowser.POSITION_RIGHTSplitBrowser.POSITION_TOPSplitBrowser.POSITION_BOTTOM分割ブラウザは、分割されたブラウズ領域を表現するための独自の要素型として「subbrowser」要素を使用する。この要素は簡易的なツールバーを備えており、ユーザの基本操作を受け付けることができる。
以下に、subbrowser要素ノードにJavaScriptオブジェクトとしてアクセスする際の、特有のプロパティおよびメソッドの一覧を示す。
subbrowser.browsersubbrowser.load(in String aURI)subbrowser.reload()subbrowser.stop()subbrowser.goBack()subbrowser.goForward()browserプロパティからtabbrowser要素へ直接アクセスすること。subbrowser.focusedsubbrowser.close()subbrowser.openNewTab()subbrowser.focus()subbrowser.blur()subbrowser.contentCollapsedsubbrowser.collapse()subbrowser.expand(in Boolean aForce)subbrowser.toggleCollapsed()分割ブラウザは、いくつかの動作に際して独自のイベントを発行する。document.getElementById('appcontent').addEventListener('SubBrowserAdded', listener, false) のようにしてこれらのイベントを取得することで、分割ブラウザの動作に合わせた処理や、分割されたブラウズ領域の自動的な初期化などを行うことができる。
SubBrowserAddedイベントtarget(およびoriginalTarget)は新しく生成されたsubbrowser要素自身。SubBrowserRemoveRequestイベントtarget(およびoriginalTarget)は削除されようとしているsubbrowser要素自身。SubBrowserRemovedイベントtarget(およびoriginalTarget)は削除されたsubbrowser要素自身。SubBrowserContentCollapsedイベントtarget(およびoriginalTarget)はたたまれたsubbrowser要素自身。SubBrowserContentExpandedイベントtarget(およびoriginalTarget)は広げられたsubbrowser要素自身。SubBrowserFocusMovedイベントtarget(およびoriginalTarget)はドキュメントのルート要素。以下の独自プロパティを持つ。
lastFocusednull。0.4.2007051501以降では、Webページ内のJavaScriptで明示的に指定してブラウズ領域を分割することができます。
Webページ内でSubBrowserAddRequestFromContentイベントを発行すると、任意のページを分割ブラウザで開くことができます。
// ステップ1:開くページや開く位置に関する情報を持ったイベントを生成
var newCmdEvent = document.createEvent('Events');
newCmdEvent.initEvent(
'SubBrowserAddRequest?'
+ 'uri=' + encodeURIComponent('http://piro.sakura.ne.jp/') + ';'
+ 'position=top',
true, true);
// ステップ2:ラッパーとなるイベント(XULCommandEvent)を生成、発行
var newEvent = document.createEvent('XULCommandEvents');
newEvent.initCommandEvent('SubBrowserAddRequestFromContent',
true, true,
window, 0, false, false, false, false,
newCmdEvent
);
document.dispatchEvent(newEvent);
uriの値としてURIエンコードされたURIを渡すと、そのページを開いた状態で分割ブラウザを開きます。URIを渡さない場合、空の状態で開きます。
positionの値としては以下の5つが利用できます。これら以外の値が設定された場合、指定は無視されます。
topbottomleftrighttab(強制的にタブとして開く)なお、属性値の大文字小文字は区別されません。top、Top、TOPなどの記述は等価に扱われます。
この方法で開いた分割ブラウザは、window.close() で閉じることはできません。この分割ブラウザを閉じるには、専用の独自イベントを発行してください。
ドキュメントのルート要素に _moz-split-browser-to 属性を設定すると、この属性が設定されている間は、window.open() で開かれるすべてのウィンドウが、この属性で指定された位置の分割ブラウザとして開かれるようになります。
document.documentElement
.setAttribute('_moz-split-browser-to', 'right');
var newSplitBrowser = window.open('http://www.google.co.jp/');
// このスクリプトを実行したブラウズ領域の右側に分割して開く
document.documentElement
.removeAttribute('_moz-split-browser-to');
window.open('http://www.google.co.jp/');
// 通常のウィンドウまたはタブとして開く
_moz-split-browser-to 属性の値は、イベントによる分割での分割位置の指定と同様です。
この方法で開いた分割ブラウザは、window.close() を使う方法と専用の独自イベントを発行する方法のどちらでも閉じることができます。
分割ブラウザにおいて読み込まれているWebページでSubBrowserRemoveRequestFromContentイベントを発行すると、そのWebページを表示している分割ブラウザを閉じることができます。
var newEvent = document.createEvent('Events');
newEvent.initEvent('SubBrowserRemoveRequestFromContent', true, true);
document.dispatchEvent(newEvent);
この方法を使うと、専用の独自イベントで開かれた分割ブラウザと、属性の指定によって開かれた分割ブラウザの、どちらも閉じることができます。
分割ブラウザとして開かれたウィンドウは、window.close() によって閉じることができます。ただし、その分割ブラウザにおいて他にタブが開かれている場合は、window.close() を実行したタブだけが閉じられます。
newSplitBrowser.close();
この方法では、属性の指定によって開かれた分割ブラウザのみ閉じることができます。専用の独自イベントで開かれた分割ブラウザを閉じるには、専用の独自イベントを使用してください。