2

我正在处理MouseDownEventMouseUpEventImage以允许选择图像的一部分。大多数浏览器将开始拖动图像,除非preventDefault()在事件中调用,如在此图像上可见:

调用的主要缺点preventDefault()是,如果焦点在 a 上TextBox,它将保留在那里,即使单击Image应该已将其删除。

我找不到一种方法来从当前碰巧拥有的任何小部件中移除焦点,或者将焦点赋予Image. 到目前为止,我唯一的解决方法是创建一个TextBox不可见的无用的,当我想移除焦点时,我让它可见,给它焦点,然后让它再次不可见。呸。有更好的建议吗?

4

1 回答 1

3

为了使图像具有焦点,您必须将属性添加tabindex到元素,然后您可以调用该Element.focus()方法以在用户单击图像时将焦点放在图像上。

final Image i = new Image("http:...");
i.getElement().setAttribute("tabindex", "0");    
i.addMouseDownHandler(new MouseDownHandler() {
  public void onMouseDown(MouseDownEvent event) {
    event.preventDefault();
    i.getElement().focus();
  }
});

如果您不需要图像可聚焦的另一种方法,只需处理dragStart事件并在此处阻止默认设置,而不是在鼠标向下和向上处理程序中。

i.addDragStartHandler(new DragStartHandler() {
  public void onDragStart(DragStartEvent event) {
    event.preventDefault();
  }
});
于 2013-01-21T10:28:23.403 回答