$stateChangeStart
イベントを見て、ユーザがブラウザBack
ボタンをクリックしたときにJavascript Confirm
のプロンプトを表示しています。event.preventDefault()AngularjsとUIRouterを使用してブラウザの履歴を削除します
ユーザーはページ1、ページ2、ページ3から移動します。ページ3では、ユーザーがBack
ボタンをクリックすると、[確認]ボックスが表示されます。ユーザーがCancel
ボタンをクリックすると、event.preventDefault()
が実行され、ユーザーは同じページにとどまります。ユーザーがもう一度Back
をクリックし、もう一度OK
を選択すると、ユーザーはページ1に戻ります。ページ2はどうなりましたか? event.preventDefault()
は最後の履歴を削除しますか?ブラウザが前のページをスキップしないようにするにはどうすればよいですか?
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
var retVal = confirm("You have unsaved changes. If you leave the page, these changes will be lost.");
if (retVal == false) {
// user wants to cancel navigating back.
event.preventDefault();
}
});