― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - タブのコンテクストメニューへオーバーレイしたい
作成者 メッセージ
  記事の件名:  Re: タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
Piro さんが書きました:
タブのコンテキストメニューの項目の追加方法としては、現状ではそれが定番ですね。

拙作アドオン「マルチプルタブハンドラ」に依存してもよければ、簡単に項目を挿入できるAPIを提供しています。参考までにどうぞ。
http://piro.sakura.ne.jp/xul/_multipletab.html

試行錯誤の末であっても、定番にたどり着けたなら、うれしい限りです。
再発明も積もれば力になると信じております。

「マルチプルタブハンドラ」
これははすごい高機能ですねぇ。
まだまだ初心者なため、自作がさらに外部のアドオンから呼び出される、なんて事態を想定してませんでした。
少しずつひもといて、勉強させていただきます。


mitsugu さんが書きました:
 そうですね。イベント・ハンドラを追加する方が楽でした。ミスリードするようなことを書いてしまって申し訳ありませんでした。

いえいえ。メニューアイテムの挿入方法を探しているうちに、前述の方法にたどり着けましたので、非常に助かりました。
ありがとうございました
投稿記事 Posted: 2009年9月28日(月) 23:08
  記事の件名:  Re: タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
BitBiterさん さんが書きました:
・document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu");
・addEventListener('popupshowing', ...

 そうですね。イベント・ハンドラを追加する方が楽でした。ミスリードするようなことを書いてしまって申し訳ありませんでした。
投稿記事 Posted: 2009年9月28日(月) 06:40
  記事の件名:  Re: タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
BitBiter さんが書きました:
少々、強引な気もしますが、
・document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu");
・addEventListener('popupshowing', ...
とやって、所与の目的を達成できました。


タブのコンテキストメニューの項目の追加方法としては、現状ではそれが定番ですね。

拙作アドオン「マルチプルタブハンドラ」に依存してもよければ、簡単に項目を挿入できるAPIを提供しています。参考までにどうぞ。
http://piro.sakura.ne.jp/xul/_multipletab.html
投稿記事 Posted: 2009年9月28日(月) 01:34
  記事の件名:  Re: タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
mitsuguさん アドバイスありがとうございます。

単純なオーバーレイ表示ができないとお聞きして、developer center を彷徨ってみました。

少々、強引な気もしますが、
・document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu");
・addEventListener('popupshowing', ...
とやって、所与の目的を達成できました。

それにしても、あとちょっとの所が難しいですね。
本当に、ありがとうございました。
投稿記事 Posted: 2009年9月27日(日) 23:52
  記事の件名:  Re: タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
 もうすこしスマートにするなら以下の id を持つ要素のいずれかを DOM API で検索し、その親要素の子要素、つまり検索結果の兄弟要素として新規のメニューアイテムを挿入するという方法もあります。
  • context_newTab
  • context_reloadTab
  • context_reloadAllTabs
  • context_closeOtherTabs
  • context_openTabInWindow
  • context_bookmarkTab
  • context_bookmarkAllTabs
  • context_undoCloseTab
  • context_closeTab

 どちらにせよ、オーバーライドは無理すじのような気がします。
投稿記事 Posted: 2009年9月27日(日) 19:44
  記事の件名:  Re: タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
 BitBiter さんがすでに見つけられているとおり、タブバー上のコンテキストメニューを見つけました。tabbrowser.xml の 85 行目の xul:menupopup 要素がそれです。

 id 属性ではなく anonid 属性が振られています。値はこれも BitBiter さんがすでに見つけられているとおり "tabContextMenu" です。

 タブバー上のコンテキストメニューが開くタイミングで発生する popupshowing イベントのイベントハンドラは、この anonid="tabContextMenu" の menupopup 要素から呼び出されている updatePopupMenu になります。updatePopupMenu 内で menuitem を動的に非表示にしているようです。

 私が思い付くのは DOM を利用して xul:menupopup 要素のうち、anonid 属性が tabContextMenu のものを検索し、xul:menuitem 要素を子要素として挿入するくらいでしょうか。

> また、よろしければ、こういった場合の汎用的な解決法を教えていただけませんでしょうか。
 おそらく地道にハックするしかないのでは。
 効率のよい方法があれば私も識者よりご教示頂きたいです。
投稿記事 Posted: 2009年9月27日(日) 18:04
  記事の件名:  タブのコンテクストメニューへオーバーレイしたい  引用付きで返信する
初めまして、BitBiterと申します。

現在、Firefox3.5用のextensionの作成にチャレンジしています。
いくつかのチュートリアルを参照して、Hello Worldレベルは出せるようになりました。

が、Firefox本体へのオーバーレイ表示で、タイトルの通り、
タブのコンテクストメニューへ、項目を挿入しようとした段階で、つまづいてしまいました。
各チュートリアルは、たいがいトップレベルのメニューか contentAreaContextMenu への
追加をしていますが、タブのコンテクストメニューを見つけられませんでした。

browser.jar をばらして、「tabContextMenu」という項目を見つけたので、
<menupopup id="tabContextMenu">...
とやってみましたが、上手く反映されず。
エラーコンソールにもなにも出力されず。。。

どうすれば、項目を追加できるのでしょうか。
また、よろしければ、こういった場合の汎用的な解決法を教えていただけませんでしょうか。
よろしくお願いし致します。
投稿記事 Posted: 2009年9月27日(日) 15:44

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean