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