1

当鼠标移到以下子类上方时,我尝试调用一个函数goog.ui.Control

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

但是,当我单击按钮时,不会显示警报。为什么不?handleMouseUp单击后鼠标抬起时不会被调用?

4

1 回答 1

1

的源代码goog.ui.Control包含以下注释:

所有控件分别在 show、hide、mouseover、mouseout 和用户操作上调度 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 演示(特别是页面底部附近的组合切换按钮)。

于 2012-08-12T05:22:55.463 回答