当光标不在文本输入或区域上时触发浏览器

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();
    }
}