2008-11-16 37 views
0

看來,XUL 命令點擊事件有所不同。如何從XUL中的命令事件中獲取鼠標按鈕?

雖然使用命令事件時,我的功能不會被調用,事件對象不包含按鈕財產。

我的問題是:我該如何檢測沒有使用點擊事件而按下的鼠標按鈕?

,可以證明我的問題,最簡單的代碼:

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 

<window id="yourwindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
<script language="JavaScript"> 
    var showMeTheButton=function(e) 
    { 
     alert(e.button); 
    } 
</script> 
<button onclick="showMeTheButton(event)" label="Click me with onclick"></button> 
<button oncommand="showMeTheButton(event)" label="Click me with oncommand"></button> 
</window> 

回答

2

主要的事情要記住的是,oncommand爲導致該按鈕的激活任何行動可以包括按空格發射扎當按鈕具有焦點,使用附接至按鈕鍵盤快捷鍵,或者用鼠標單擊的按鈕。事件處理程序實際上不應該關心它是如何被調用的,而只是它是。 (我想這是一個非常明智的決定,以保持一致的用戶界面。)

導致按鈕屬性添加到事件對象的唯一行動是onclickondblclickonmousedownonmouseup。你會注意到,即使您停用onclick按鈕,該事件仍是起火而與oncommand不會。

要獲得與oncommand相同的功能,您需要自己處理onclickonkeydown事件,同時確保該按鈕仍處於啓用狀態。您可能還可以創建使用XBL其中有像onleftclickonmiddleclick自定義事件,然後回落到oncommand如果沒有設置他們的自定義按鈕 - 但我沒有嘗試過。

相關問題