0

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>
4

1 に答える 1

2

覚えておくべき主なことはoncommand、ボタンにフォーカスがあるときにスペースバーを押す、ボタンに関連付けられたキーボードショートカットを使用する、またはハツカネズミ。イベント ハンドラーは、それがどのように呼び出されたかを気にする必要はありません。(これは、一貫したユーザー インターフェイスを維持するための意識的な決定だったと思います。)

Button プロパティが Event オブジェクトに追加される唯一のアクションは 、、、、onclickおよびです。ボタンを無効にしてもイベントは発生しますが、ボタンを使用すると発生しないことに注意してください。ondblclickonmousedownonmouseuponclickoncommand

と同じ機能を得るには、ボタンがまだ有効であることを確認しながら、とイベントoncommandの両方を自分で処理する必要があります。XBL を使用してカスタム ボタンを作成することもできます。これには、またはのようなカスタム イベントが設定されていない場合にフォールバックしますが、試したことはありません。onclickonkeydownonleftclickonmiddleclickoncommand

于 2008-11-16T23:00:21.377 に答える