Consider the following HTML snippet containing some javascript utilizing prompt
and unload
. The prompt()
method works fine but I want alerting something like Goodbye, user when reloading or leaving the page. Any help is greatly appreciated.
<body onload="promptName()" >
<script type="text/javascript">
function promptName()
{
var userName = prompt("What's your name ?", "")
return userName;
}
function goodBye()
{
alert("Goodbye, " + promptName() + "!");
}
window.onunload = goodBye();
</script>
</body>
The onunload utility, which unloads data from a database, writes a database or table into a file on tape or disk. The onload utility loads data that was created with the onunload command into the database server.
The onunload event occurs once a page has unloaded (or the browser window has been closed). onunload occurs when the user navigates away from the page (by clicking on a link, submitting a form, closing the browser window, etc.).
The onbeforeunload event occurs when the document is about to be unloaded. This event allows you to display a message in a confirmation dialog box to inform the user whether he/she wants to stay or leave the current page. The default message that appears in the confirmation box, is different in different browsers.
You should write it like this:
window.onunload = goodBye;
Also, you might consider using the onbeforeunload event in some browsers:
window.onbeforeunload = goodBye;
When you write window.onunload = goodBye();
you assign whatever handler that is returned from goodBye
to the unload
event. Since nothing is returned, there will be no event handler. You need to reference the function instead: window.onunload = goodBye;
You can't assing this way: window.onunload = goodBye();
If you want to assing this way you have three ways:
// by this way you use the name of the function, so you override the onunload function with goodBye function
window.onunload = goodBye;
or
// This way you redefine the function
window.onunload = function(){goodBye()};
And my favourite because it allows you to add more functionality:
// This way you create a event listener which allows you to add as many functions as you ant
window.addEventListener("unload", goodBye, false);
As seen HERE
window.onbeforeunload = function() {
alert("Goodbye, " + promptName() + "!");
};
or
window.onbeforeunload = goodBye;
Although I would suggest saving the username to a glob by seting a var outside you load func that receives the username after first prompt, then you dont have to prompt them for their name again when they leave
<body onload="promptName()" >
<script type="text/javascript">
function promptName()
{
var userName = prompt("What's your name ?", "")
return userName;
}
window.onbeforeunload = function() {
alert("Goodbye, " + promptName() + "!");
}
</script>
</body>
onbeforeunload
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With