在我的GWT应用程序中,我在TextArea上注册一个BlurHandler,以便我可以保存更改,并在焦点移动到其他位置时从编辑模式返回到查看模式。这可行,但似乎也打败了移动焦点的事件的影响,至少在devmode的Chrome上。例如,如果用户单击一个Anchor,TextBox将获取onBlur(),然后Anchor不会获得onClick();而在我注册onBlur之前,Anchor会得到onClick()。这似乎非常可靠(再次,在devmode中的Chrome中)。我小心不要调用event.stopPropagation()或event.preventDefault()。我有什么想法可以获得onBlur以及onClick()吗?
答案 0 :(得分:2)
我有类似的问题。我无法跟踪源问题。我确实启用了dev toolbar / firebug并设置事件断点进行测试;看起来似乎在模糊操作后未触发click事件。在玩了好几个小时后(我不太确定是什么激发了我尝试这个),我在一个定时器中放下了onblur动作,执行延迟大约300ms。这似乎对我有用。我认为这可能与我的操作稍微修改了页面和项目的可见性,重新呈现页面的事实有关,我只能猜测单线程浏览器模型杀死了不再关注的click事件正确的区域。
textBox.addBlurHandler(new BlurHandler()
{
@Override
public void onBlur(BlurEvent event)
{
Timer delayTimer = new Timer()
{
@Override
public void run()
{
//do stuff
}
};
delayTimer.schedule(300);
}
});
anchor.addClickHandler(....)