我有一个简单的 GWT PushButton,它通过单击打开一些对话框。CSS 样式以 onHovering 更改按钮外观的方式编写。
当我通过单击此按钮打开一些对话框并关闭它时,问题就开始了。onHovering 样式仍然存在!
发生这种情况是因为在作为 PushButton 的父级的 CustomButton 中,有一个代码仅在 MouseOut 事件发生时才删除悬停。问题是,如果您用一些深色的半透明屏幕打开对话框,它永远不会发生。没有发出相应的事件,按钮保持 onHovered 状态。
我尝试通过手动触发此事件来解决此问题。幸运的是,当用户关闭该对话框时,我可以捕捉 onBlur 事件并尝试在那一刻做一些事情。我尝试手动创建 OnMouseOut 事件:
@Override
public void onBrowserEvent(Event event) {
int type = DOM.eventGetType(event);
if (type == Event.ONBLUR)
{
NativeEvent evt2 = Document.get().createMouseOutEvent(1, 0, 0, 0, 0, false, false, false, false, NativeEvent.BUTTON_LEFT, MyPushButton.this.getElement());
MyPushButton.this.getElement().dispatchEvent(evt2);
}
logger.info(event.getType());
super.onBrowserEvent(event);
}
...但由于某些原因,此代码从不发送事件。新的 MouseOut 事件未在控制台中记录,并且 onHovering 样式未更改。不抛出异常。
为什么我不能触发事件?有没有其他方法可以解决这个问题?
GWT 2.5.1