Posted at

ページ遷移時の「このサイトを離れますか?」を意地でも表示しない方法

フォームの入力値を編集したときなどに表示される「このサイトを離れますか?」というポップアップを非表示にする方法です。

色々と調べましたが、Object.definePropertyの setter で検知して値を上書きすると確実でした。

Object.defineProperty(window, 'onbeforeunload', {

set(newValue) {
if (typeof newValue === 'function') window.onbeforeunload = null;
}
});

ちなみに if (typeof newValue === 'function') 等のチェックがないと変更を検知し続けて無限ループになり、スタックが大変なことになるで気をつけましょう。

また、もし他に良い方法をご存知の方がいたらコメントで教えてください🙏


参考