Как вызвать функцию, когда мышь поднимается над goog.ui.Control?

Я попытался вызвать функцию, когда мышь поднимается выше подкласса goog.ui.Control:

/** @override */
myapp.MyButton.prototype.handleMouseUp =
    function(e) {
  goog.base(this, 'handleMouseUp', e);
  alert('Woof!');
}

Однако, когда я нажимаю на свою кнопку, не появляется предупреждение. Почему бы нет? Разве handleMouseUp не вызывается, когда моя мышь поднимается после щелчка?


person dangerChihuahua007    schedule 12.08.2012    source источник


Ответы (1)


Исходный код для goog.ui.Control содержит следующий комментарий:

Все элементы управления отправляют события SHOW, HIDE, ENTER, LEAVE и ACTION при отображении, скрытии, наведении курсора мыши, выходе из мыши и действии пользователя соответственно.

Чтобы узнать, какие именно события отправляются для различных действий, см. демонстрационная версия goog.ui.Control с журналом событий в реальном времени.

Чтобы включить дополнительные события перехода, goog.ui.Control включает следующий метод:

/**
 * Enables or disables transition events for the given state(s).  Controls
 * handle state transitions internally by default, and only dispatch state
 * transition events if explicitly requested to do so by calling this method.
 * @param {number} states Bit mask of {@link goog.ui.Component.State}s for
 *     which transition events should be enabled or disabled.
 * @param {boolean} enable Whether transition events should be enabled.
 */
goog.ui.Control.prototype.setDispatchTransitionEvents = function(states,
    enable) {
  this.statesWithTransitionEvents_ = enable ?
      this.statesWithTransitionEvents_ | states :
      this.statesWithTransitionEvents_ & ~states;
};

Например, вы можете сделать следующее, чтобы включить события перехода для всех состояний.

var myButton = new myapp.MyButton();
myButton.setDispatchTransitionEvents(goog.ui.Component.State.ALL, true);

Теперь, когда кнопка мыши нажата, будет отправлено событие activate, а при отпускании кнопки мыши будет отправлено событие deactivate.

См. демонстрацию goog.ui.Button (в частности, комбинированные кнопки-переключатели в нижней части страницы).

person Christopher Peisert    schedule 12.08.2012