我有一个允许用户编辑其状态的组件。这会触发一个notSaved
多变的。我有一个beforeunload
事件处理程序来处理重新加载和退出页面以提醒用户保存状态,但是使用 SvelteKit,使用浏览器中的后退按钮似乎不会触发beforeunload
事件。我也有一个popstate
事件处理程序,因为单击后退按钮时会触发该事件处理程序,但我不知道如何防止window.history
改变如果notSaved
变量为真。
SvelteKit 有没有办法触发Changes you made may not be saved.
弹出窗口类似于在beforeunload
按下后退或前进按钮时发生事件?
您可以使用beforeNavigate函数被通知导航意图以便可能阻止它,例如:
<script>
import { beforeNavigate } from '$app/navigation';
let unsavedWork = false;
let value = 0;
beforeNavigate(({ from, to, cancel }) => {
if (unsaved) {
cancel();
showUnsavedWorkPopup();
}
});
function onChange() {
...
unsavedWork = true;
}
async function save() {
await ...
unsavedWork = false;
}
</script>
<input type="number" bind:value on:change={onChange}>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)