当光标不在文本输入或区域上时触发浏览器
Trigger browser back when cursor is not on a text input or area
当鼠标光标不在文本输入或文本区域时,如何使用 GWT 使浏览器返回触发?
然而,当它位于文本输入或文本区域时,按下后退键应该起到文本退格的作用,而不是触发浏览器后退?
像这样的东西应该有用。只需调用 register 方法即可设置监听器。
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Event.NativePreviewEvent;
import com.google.gwt.user.client.Event.NativePreviewHandler;
import com.google.gwt.user.client.History;
public class BackPreviewHandler implements NativePreviewHandler {
private HandlerRegistration handlerRegistration;
@Override
public void onPreviewNativeEvent(final NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYDOWN) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE) {
Element elemPointedByMouse = Element.as(event.getNativeEvent().getEventTarget());
String tagName = elemPointedByMouse.getTagName();
System.out.println(tagName);
if (!tagName.equalsIgnoreCase("INPUT")
&& !tagName.equalsIgnoreCase("TEXTAREA")) {
History.back();
}
}
}
}
public void register() {
handlerRegistration = Event.addNativePreviewHandler(this);
}
public void deregister() {
handlerRegistration.removeHandler();
}
}
当鼠标光标不在文本输入或文本区域时,如何使用 GWT 使浏览器返回触发?
然而,当它位于文本输入或文本区域时,按下后退键应该起到文本退格的作用,而不是触发浏览器后退?
像这样的东西应该有用。只需调用 register 方法即可设置监听器。
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Event.NativePreviewEvent;
import com.google.gwt.user.client.Event.NativePreviewHandler;
import com.google.gwt.user.client.History;
public class BackPreviewHandler implements NativePreviewHandler {
private HandlerRegistration handlerRegistration;
@Override
public void onPreviewNativeEvent(final NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYDOWN) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE) {
Element elemPointedByMouse = Element.as(event.getNativeEvent().getEventTarget());
String tagName = elemPointedByMouse.getTagName();
System.out.println(tagName);
if (!tagName.equalsIgnoreCase("INPUT")
&& !tagName.equalsIgnoreCase("TEXTAREA")) {
History.back();
}
}
}
}
public void register() {
handlerRegistration = Event.addNativePreviewHandler(this);
}
public void deregister() {
handlerRegistration.removeHandler();
}
}