2

可能重复:
在 Chrome 中,当焦点位于已注册 onChange 和 onBlur 处理程序的 TextArea 上时,没有在 FocusPanel 上获得 onClick()

在我的 GWT 应用程序中,我在 TextArea 上注册了一个 BlurHandler,以便我可以保存更改并在焦点移动到其他地方时从编辑模式返回查看模式。这有效,但似乎也破坏了移动焦点的事件的效果,至少在开发模式下的 Chrome 上。例如,如果用户点击一个 Anchor,TextBox 会得到 onBlur(),然后 Anchor 不会得到 onClick();而在我注册 onBlur 之前,Anchor 将获得 onClick()。这似乎相当可靠(同样,在开发模式下的 Chrome 中)。我小心不要调用 event.stopPropagation() 或 event.preventDefault()。任何想法如何获得 onBlur 和 onClick() ?

4

1 回答 1

2

我有一个类似的问题。虽然我无法跟踪源问题。我确实启用了开发工具栏/萤火虫并设置了事件断点来测试;看起来在模糊操作之后没有触发点击事件。在玩了几个小时之后(我不太确定是什么启发了我尝试这个),我将 onblur 动作放在一个计时器中,执行延迟约为 300 毫秒。这似乎对我有用。我认为这可能与我的操作稍微修改了页面和项目的可见性有关,女巫重新渲染了页面,我只能猜测单线程浏览器模型杀死了不再出现的点击事件正确的区域。

      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(....)
于 2012-06-06T21:18:07.283 回答