Skip to content

Instantly share code, notes, and snippets.

@nfreear
Created May 30, 2021 08:36
Show Gist options
  • Select an option

  • Save nfreear/35808dd336d0be0e7fc8ab5e479ad0d0 to your computer and use it in GitHub Desktop.

Select an option

Save nfreear/35808dd336d0be0e7fc8ab5e479ad0d0 to your computer and use it in GitHub Desktop.
`beforeUnload` event test
<!doctype html> <title> `beforeUnload` event test </title>
<h1> <tt>beforeUnload</tt> event test </h1>
<h2><a href="?reload=1">Reload page</a></h2>
<script>
window.addEventListener('beforeunload', (event) => {
event.preventDefault();
console.time('unload');
console.warn('> beforeUnload start:', event);
delay().then(() => {
console.warn('> beforeUnload end.');
console.timeLog('unload');
});
return event.returnValue = 'Are you sure you want to exit?';
},
{ capture: true });
async function delay (delayMs = 10, result = null) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(result);
}, delayMs);
});
}
/*
const beforeUnloadListener = (event) => {
event.preventDefault();
console.warn('> beforeUnload:', event);
return event.returnValue = 'Are you sure you want to exit?';
};
const nameInput = document.querySelector("#name");
nameInput.addEventListener("input", (event) => {
if (event.target.value !== "") {
addEventListener("beforeunload", beforeUnloadListener, {capture: true});
} else {
removeEventListener("beforeunload", beforeUnloadListener, {capture: true});
}
}); */
</script>
<pre>
NDF, 30-May-2021.
* https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
</pre>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment