2010-08-13 408 views
2

在XUL中,您可以使用<statusbarpanel>標籤創建狀態欄面板圖標,類似於Firebug和Greasemonkey使用的圖標。如果設置正確的類,你可以拋出一個<menupop>裏面,然後有一個彈出菜單當用戶點擊該圖標,像這樣......XUL:如何在狀態欄內創建嵌套menupopup(帶狀態欄面板菜單圖標)

<statusbarpanel class="statusbarpanel-menu-iconic" 
     src="chrome://YourExtension/content/icon.png"> 
    <menupopup> 
     <menuitem label="whatever" oncommand="doSomething();"> 
     <menuitem label="whatever else" oncommand="doSomethingElse();"> 
    </menupopup> 
</statusbarpanel> 

現在,與其他的彈出式菜單你可以嵌套了一系列使用菜單標籤菜單:

<statusbarpanel class="statusbarpanel-menu-iconic" 
     src="chrome://YourExtension/content/icon.png"> 
    <menu value="Old"> 
     <menupopup> 
      <menuitem label="whatever" oncommand="doSomething();"> 
      <menuitem label="whatever else" oncommand="doSomethingElse();"> 
     </menupopup> 
    </menu> 
    <menu value="New> 
     <menupopup> 
      <menuitem label="yet another" oncommand="doYetAnotherSomething();"> 
     </menupopup> 
    </menu> 
</statusbarpanel> 

,但上面的代碼不實際工作,因爲<statusbarpanel>將不允許<menu>孩子(當然,它會允許它,但不能創建期望的效果)。

所以,我想知道的是...有沒有什麼辦法可以讓一個狀態欄面板圖標觸發的菜單與多層菜單項?

*編輯* 既然不能在答案的評論張貼此(並得到語法着色和這樣),以下是終於爲我工作(感謝Sathish所在!):

<statusbarpanel class="statusbarpanel-menu-iconic" 
     src="chrome://YourExtension/content/icon.png" popup="stausBarPanelMenu"> 
</statusbarpanel> 
<popup id="statusBarPanelMenu" position="start_before"> 
    <menu value="Old"> 
     <menupopup> 
      <menuitem label="whatever" oncommand="doSomething();"> 
      <menuitem label="whatever else" oncommand="doSomethingElse();"> 
     </menupopup> 
    </menu> 
    <menu value="New> 
     <menupopup> 
      <menuitem label="yet another" oncommand="doYetAnotherSomething();"> 
     </menupopup> 
    </menu> 
</popop> 

哦,並且作爲任何XUL開發人員可能會讀到的一個注意事項:您應該真正消除彈出窗口中的「menupopup內部狀態欄」。回答這個問題的風格同樣容易學習/使用,功能更加強大,它依賴於可用於其他XUL元素的相同彈出機制。這整個「menupopup內狀態欄」這只是一個混亂,不需要,異常。

回答

0

試試這個:

  1. 創建一個彈出元素是這樣的: <popup ... > <menu ... > <menupopup ... > <menuitem ... > </menupopup ... > </menu> </popup>

  2. 分配popupid元素添加到oncontextmenu屬性中,或使用statusbarpanel元素的onclick事件動態顯示它。

+0

我不認爲有oncontextmenu這樣的事情,onclick邏輯應該不需要這種事情,但是......你確實有正確的想法:-)我能夠基本上你所描述的只是使用popup屬性來代替,而且它完美地工作。我將在原始問題中發佈我的工作代碼(用於語法着色)。非常感謝! – machineghost 2010-08-14 21:45:15