GWT处理onBlur也阻止了事件的传播

时间:2012-04-27 07:45:26

标签: gwt

  

可能重复:
  in Chrome not getting an onClick() on a FocusPanel when focus was on a TextArea that has registered onChange and onBlur handlers

在我的GWT应用程序中,我在TextArea上注册一个BlurHandler,以便我可以保存更改,并在焦点移动到其他位置时从编辑模式返回到查看模式。这可行,但似乎也打败了移动焦点的事件的影响,至少在devmode的Chrome上。例如,如果用户单击一个Anchor,TextBox将获取onBlur(),然后Anchor不会获得onClick();而在我注册onBlur之前,Anchor会得到onClick()。这似乎非常可靠(再次,在devmode中的Chrome中)。我小心不要调用event.stopPropagation()或event.preventDefault()。我有什么想法可以获得onBlur以及onClick()吗?

1 个答案:

答案 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(....)