Search code examples
gwtonbeforeunload

Why the OnBeforeUnload doesn't intercept the back button in my GWT app?


I have a hook on the beforeUnload event. If i try to click on a link, reload or close the tab or the navigator, the app ask for confirmation before leaving. That's the desired behavior.

But if click on the back button or the backspace outside an input, no confirmation.

At the beginning of the html :

window.onbeforeunload = function() {
 if (confirmEnabled)
    return "";
}

And i use the Gwt PlaceHistoryMapper.

What did i miss ? Where did i forgot to look ?

Thanks !


Solution

  • As long as you stay within your app, because it's a single-page app, it doesn't by definition unload, so there's no beforeunload event.

    When using Places, the equivalent is the PlaceChangeRequestEvent dispatched by the PlaceController on the EventBus. This event is also dispatched in beforeunload BTW, and is the basis for the mayStop() handling in Activities.

    Outside GWT, in the JS world, an equivalent would be hashchange and/or popstate, depending on your PlaceHistoryHandler.Historian implementation (the default one uses History.newItem(), so that would be hashchange).