例如,当前页面是www.google.com。 但我在地址栏中输入了一个不同的网址,然后点击了。这个网站已经完全 GWT代码。
但我想回到www.google.com的上一页。 所以我点击浏览器的后退按钮。但是如何从当前获取后退按钮的事件 GWT代码。我可以在当前页面的GWT中设置任何后退事件处理程序吗? 一个通知我按下后退按钮的警报。
GWT有没有解决方案?
答案 0 :(得分:5)
在浏览器窗口之前触发 关闭或导航到另一个 站点。
另一个选项是History.addValueChangeHandler
,它会监听浏览器历史记录堆栈中的更改(有关详细信息,请参阅the docs)。
答案 1 :(得分:5)
+1给Igor和Alex。如果您想使用ClosingHandler,可以使用以下代码:
Window.addWindowClosingHandler(new Window.ClosingHandler() {
@Override
public void onWindowClosing(final ClosingEvent event) {
event.setMessage("Don't you think my site is awesome?");
}
});
来自ClosingHandler.onWindowClosing()的Javadoc的一些信息:
/* Fired just before the browser window closes or navigates to a different
* site. No user-interface may be displayed during shutdown. */
答案 2 :(得分:1)
您可以实施HistoryListener
界面:每次点击后退和前进按钮都会调用您的班级方法onHistoryChanged
(带String
令牌)。然后,您可以与History类进行互动,例如,一个back()
静态方法来“回去”。但是,我不确定它是否会在 GWT开始之前一直回到(但它肯定值得尝试; - )。
答案 3 :(得分:0)
试试这个会起作用
Event.addNativePreviewHandler(new Event.NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(final NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYDOWN) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE) {
Element element = Element.as(event.getNativeEvent().getEventTarget());
String tagName = element.getTagName();
System.out.println(tagName);
// Add checks for other input controls
if (!tagName.equalsIgnoreCase("INPUT")
&& !tagName.equalsIgnoreCase("TEXTAREA")) {
boolean result = Window.confirm("Are you sure?");
if (!result) {
event.cancel();
}
}
}
}
}
});
答案 4 :(得分:0)
您也可以使用此原生代码
public native void call()/*-{
$wnd.onkeydown = GetChar;
function GetChar (event)
{
var key = event.keyCode;
var bb = event.target.nodeName;
if(key==8 && bb=="BODY")//checking keyCode of key for backspace
{
var x= window.confirm("Are you sureyou want to leave the page");
if (x==true)
{
window.history.back();
}
else if(x==false)
{
return false;
}
}
}
}-*/;