当鼠标移到以下子类上方时,我尝试调用一个函数goog.ui.Control
:
/** @override */
myapp.MyButton.prototype.handleMouseUp =
function(e) {
goog.base(this, 'handleMouseUp', e);
alert('Woof!');
}
但是,当我单击按钮时,不会显示警报。为什么不?handleMouseUp
单击后鼠标抬起时不会被调用?
当鼠标移到以下子类上方时,我尝试调用一个函数goog.ui.Control
:
/** @override */
myapp.MyButton.prototype.handleMouseUp =
function(e) {
goog.base(this, 'handleMouseUp', e);
alert('Woof!');
}
但是,当我单击按钮时,不会显示警报。为什么不?handleMouseUp
单击后鼠标抬起时不会被调用?
的源代码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 演示(特别是页面底部附近的组合切换按钮)。