Главное, что нужно иметь в виду, это то, что oncommand
запускается для любого действия, которое приводит к активации кнопки, которая может включать нажатие клавиши пробела, когда кнопка имеет фокус, с помощью сочетания клавиш, прикрепленного к кнопке. или нажав кнопку мышкой. Обработчик события не должен заботиться о том, как он был вызван, только о том, как это было. (Я полагаю, что это было сознательное решение сохранить единый пользовательский интерфейс.)
Единственными действиями, которые приводят к добавлению свойства кнопки к объекту Event, являются onclick
, ondblclick
, onmousedown
и onmouseup
. Вы заметите, что даже если вы отключите кнопку onclick
, событие все равно сработает, тогда как с oncommand
оно не будет.
Чтобы получить ту же функциональность, что и oncommand
, вам нужно самостоятельно обработать события onclick
и onkeydown
, при этом убедившись, что кнопка все еще включена. Вы также можете создать пользовательскую кнопку с помощью XBL, в которой есть пользовательские события, такие как onleftclick
или onmiddleclick
, которые затем возвращаются к oncommand
, если они не установлены, но я не пробовал.