我正在MouseDownEvent
处理MouseUpEvent
和Image
,以便选择部分图片。大多数浏览器将开始拖动图像,除非在事件上调用preventDefault()
,如此图像所示:
调用preventDefault()
的主要缺点是,如果重点是TextBox
,那么即使Image
上的点击应删除它,它也会保留在那里
我找不到从当前碰巧拥有它的任何小部件中移除焦点的方法,或者将焦点放在Image
上。到目前为止,我唯一的解决方法是创建一个无法看见的无用TextBox
,当我想要移除焦点时,我将其视为可见,给它焦点,并使其再次不可见。呸。还有更好的建议吗?
答案 0 :(得分: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();
}
});