3
ハッシュ変更またはHTML 5履歴変更をキャンセルすることができるブラウザのバックまたはフォワードイベントをキャンセルすることは可能ですかwindow.onbeforeunload経由のページローディングバックまたはフォワードイベント?ハッシュ変更またはHTML 5履歴の変更を引き起こすバックイベントまたはフォワードイベントのキャンセル
ハッシュ変更またはHTML 5履歴変更をキャンセルすることができるブラウザのバックまたはフォワードイベントをキャンセルすることは可能ですかwindow.onbeforeunload経由のページローディングバックまたはフォワードイベント?ハッシュ変更またはHTML 5履歴の変更を引き起こすバックイベントまたはフォワードイベントのキャンセル
あなたの状況に役立つかどうかわかりませんが、一般的なハッシュルーティングライブラリのSammy.jsにはbeforeハンドラがあります。私は以前にアクセスしたハッシュを記録するために私のアプリケーションでそれを使っていましたが、ハッシュの場合はそれらを止めたいので、falseを返すとそのページに残ります。前のページを表示するにはURLを書き直す必要がありますが、動作しているようです。あなたはかなりよく確認せずにページを残してからユーザーを保つことができるwindow.onbeforeunload
と組み合わせて使用
app.before(function (context) {
if (context.path === lastRoute) return false; // Was fired from our app.setLocation below.
if (lastRoute === "/#MyHashWhereIFirstWantToConfirm") {
if (!confirm("Are you sure you wish to leave this page?")) {
app.setLocation(lastRoute); // Send them back to /#MyHashWhereIFirstWantToConfirm
return false; // Keep the handler for the destination page from firing.
}
}
lastRoute = context.path;
return true;
});
:ここで私が何をしたかの小さなサンプルです。
イベントコールバックから 'false'を返すのはどうですか? – qwertymk
@qwertymk私はそれを試みました、それはonhashchangeまたはonpopstateのために働かなかった。 –
クリックハンドラに登録してみてください – qwertymk