いくつかの拡張機能は、コンテンツを表示するための「下部ウィンドウ」を提供します。FirebugとScribeFireは、メインコンテンツがブラウザの下部に表示される良い例です。これは、ブラウザのサイドバー機能と非常によく似ているようです。
ブラウザの「下部のサイドバー」がないため、拡張機能に下部ウィンドウを作成するためのベストプラクティス/方法はありますか?
いくつかの拡張機能は、コンテンツを表示するための「下部ウィンドウ」を提供します。FirebugとScribeFireは、メインコンテンツがブラウザの下部に表示される良い例です。これは、ブラウザのサイドバー機能と非常によく似ているようです。
ブラウザの「下部のサイドバー」がないため、拡張機能に下部ウィンドウを作成するためのベストプラクティス/方法はありますか?
オーバーレイを使用して拡張 UI を作成します。オーバーレイでは、メインのブラウザー ページ、browser.xul に関する UI の挿入ポイントを指定します。
私たちが持っているFirefoxのメインページbrowser.xulからの抜粋
<vbox id="appcontent" flex="1">
<tabbrowser id="content" disablehistory="true"
flex="1" contenttooltip="aHTMLTooltip"
contentcontextmenu="contentAreaContextMenu"
onnewtab="BrowserOpenTab();"
autocompletepopup="PopupAutoComplete"
ondragdrop="nsDragAndDrop.drop(event, contentAreaDNDObserver);"
onclick="return contentAreaClick(event, false);"
/>
</vbox>
以前のバージョンの Firebug ファイル browserOverlay.xul からの抜粋です。
<vbox id="appcontent">
<splitter id="fbContentSplitter" collapsed="true"/>
<vbox id="fbContentBox" collapsed="true" persist="height">
<toolbox id="fbToolbox">
<toolbar id="fbToolbar">
<toolbarbutton id="fbFirebugMenu" type="menu">
<menupopup onpopupshowing="return FirebugChrome.onOptionsShowing(this);">
<menuitem label="&firebug.DisableFirebug;" type="checkbox"
oncommand="FirebugChrome.onToggleOption(this)" option="disabledAlways"/>
<menuitem type="checkbox"
oncommand="FirebugChrome.onToggleOption(this)" option="disabledForSite"/>
<menuitem label="&firebug.AllowedSites;" command="cmd_openFirebugPermissions"/>
<menuseparator/>
<menu label="&firebug.TextSize;">
<menupopup>
<menuitem label="&firebug.IncreaseTextSize;"
oncommand="Firebug.increaseTextSize(1)"/>
<menuitem label="&firebug.DecreaseTextSize;"
oncommand="Firebug.increaseTextSize(-1)"/>
<menuitem label="&firebug.NormalTextSize;" oncommand="Firebug.setTextSize(0)"/>
</menupopup>
</menu>
<menu label="&firebug.Options;">
<menupopup onpopupshowing="return FirebugChrome.onOptionsShowing(this);">
<menuitem type="checkbox" label="&firebug.AlwaysOpenInWindow;"
oncommand="FirebugChrome.onToggleOption(this)"
option="openInWindow"/>
<menuitem type="checkbox" label="&firebug.ShowTooltips;"
oncommand="FirebugChrome.onToggleOption(this)"
option="showInfoTips"/>
<menuitem type="checkbox" label="&firebug.ShadeBoxModel;"
oncommand="FirebugChrome.onToggleOption(this)"
option="shadeBoxModel"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem label="&firebug.Website;" oncommand="Firebug.visitWebsite('main')"/>
<menuitem label="&firebug.Documentation;" oncommand="Firebug.visitWebsite('docs')"/>
<menuitem label="&firebug.Forums;" oncommand="Firebug.visitWebsite('discuss')"/>
<menuseparator/>
<menuitem label="&firebug.Donate;" oncommand="Firebug.visitWebsite('donate')"/>
</menupopup>
</toolbarbutton>
<toolbarbutton id="fbDetachButton" class="toolbarbutton-iconic"
tooltiptext="&firebug.DetachFirebug;" command="cmd_detachFirebug"/>
<toolbarbutton id="fbCloseButton" class="toolbarbutton-iconic"
tooltiptext="&firebug.CloseFirebug;" command="cmd_toggleFirebug"/>
</toolbar>
</toolbox>
<hbox id="fbPanelBox" flex="1"/>
<hbox id="fbCommandBox"/>
</vbox>
</vbox>
XUL マークアップの両方のブロックが
<vbox id="appcontent".../>
これは、Gecko エンジンが、オーバーレイされるページにオーバーレイがどのように適合するかを判断するために使用するものです。browserOverlay.xul を見るとcommandset, statusbar
、 などの他の挿入ポイントも表示されます。
詳細については、Mozilla Developer Centerを参照してください。