「メニュー項目を追加する」の編集履歴(バックアップ)一覧はこちら
「メニュー項目を追加する」(2013/02/03 (日) 08:42:53) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents()
*ブラウザウィンドウ内のメニューに追加
chrome.manifest
#highlight(XML){
overlay chrome://browser/content/browser.xul chrome://sample/content/browser.xul}
**メインメニュー
例えば、ファイルメニューに「再起動」を追加するなら、browser.xulに
#highlight(XML){
<menupopup id="menu_FilePopup">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"
insertbefore="menu_FileQuitItem"/>
</menupopup>}
**Firefoxメニュー
#highlight(XML){
<vbox id="appmenuPrimaryPane">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"
insertbefore="appmenu-quit"/>
</vbox>}
**コンテンツ・コンテキストメニュー
#highlight(XML){
<menupopup id="contentAreaContextMenu">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"/>
</menupopup>}
**タブ・コンテキストメニュー
#highlight(XML){
<menupopup id="tabContextMenu">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"/>
</menupopup>}
**ツールバー・コンテキストメニュー
#highlight(XML){
<menupopup id="toolbar-context-menu">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"/>
</menupopup>}
*Places のメニューに追加
ブラウザウィンドウだけでなく、ブックマークサイドバーやブックマークと履歴の管理ウィンドウにも有る事を忘れないように。
**ブックマークメニュー
ブックマークメニューは動的に生成されてるので、JavsScriptでやる必要がある。
omni.jar/chrome/browser/content/browser/places/browserPlacesViews.js内の
PlacesViewBase.prototype._onPopupShowing にコードを追加してやればいい。
#highlight(javascript){{
eval('PlacesViewBase.prototype._onPopupShowing = '
+ PlacesViewBase.prototype._onPopupShowing.toString().replace(
'this._mayAddCommandsItems(popup);',
'$& this.sampleAddItem(popup);')
);
// 名前が被らないように注意
PlacesViewBase.prototype.sampleAddItem = function(aPopup) {
// ルートメニューなら表示しない
if (aPopup == this._rootElt)
return;
// ライブブックマークなら表示しない
var itemId = aPopup._placesNode.itemId;
if (itemId != -1 && PlacesUtils.itemIsLivemark(itemId))
return;
if (!aPopup.sampleItem) {
aPopup.sampleItem = document.createElement('menuitem');
aPopup.sampleItem.setAttribute('label', 'sample');
aPopup.appendChild(aPopup.sampleItem);
}
} }}
**ブックマーク・コンテキストメニュー
#highlight(XML){
<menupopup id="placesContext">
<menuitem label="サンプル"
oncommand="getTopWin().sample.func(document.popupNode);"
selectiontype="single"
selection="bookmark|folder"/>
</menupopup>}
#contents()
*ブラウザウィンドウ内のメニューに追加
chrome.manifest
#highlight(XML){
overlay chrome://browser/content/browser.xul chrome://sample/content/browser.xul}
**メインメニュー
例えば、ファイルメニューに「再起動」を追加するなら、browser.xulに
#highlight(XML){
<menupopup id="menu_FilePopup">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"
insertbefore="menu_FileQuitItem"/>
</menupopup>}
**Firefoxメニュー
#highlight(XML){
<vbox id="appmenuPrimaryPane">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"
insertbefore="appmenu-quit"/>
</vbox>}
**コンテンツ・コンテキストメニュー
#highlight(XML){
<menupopup id="contentAreaContextMenu">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"/>
</menupopup>}
**タブ・コンテキストメニュー
#highlight(XML){
<menupopup id="tabContextMenu">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"/>
</menupopup>}
**ツールバー・コンテキストメニュー
#highlight(XML){
<menupopup id="toolbar-context-menu">
<menuitem label="再起動"
oncommand="Application.restart();"
accesskey="R"/>
</menupopup>}
*Places のメニューに追加
ブラウザウィンドウだけでなく、ブックマークサイドバーやブックマークと履歴の管理ウィンドウにも有る事を忘れないように。
[[ブックマーク]]に移動したので、そちらを参照