Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing "this page is asking you to confirm that you want to leave"

Tags:

javascript

This is a warning that Firefox raises when I want to leave certain pages. Based on the pages I've seen this on and that this warning appears when I try to close the page after filling in the forms, I can only assume that it's working on a dynamic page. Which technology is used to implement this functionality? How can I implement it myself on a simple hello-world page?

like image 574
Vlad Vivdovitch Avatar asked Jul 23 '11 15:07

Vlad Vivdovitch


2 Answers

You basically implement a handler for beforeunload event. This allows you to warn your users that they have unsaved data.

Pseudo Code:

  window.onbeforeunload = function warnUsers()
  {
    if (needToConfirm)
    {
      // check to see if any changes to the data entry fields have been made
      if(changesPresent) {
            return message to display
      }
      else {
      // no changes - return nothing      
      }
    }
  }

Here's a very good article that discusses this in depth: http://www.4guysfromrolla.com/webtech/100604-1.shtml Note: This link no longer exists. Here is a copy of it from the Wayback Machine: https://web.archive.org/web/20211020134123/http://www.4guysfromrolla.com/webtech/100604-1.shtml

Note: There is onunload event also but that fires after the page has unloaded, hence is too late to take any reliable action. You should never put any critical code in onunload as that is never guranteed to execute.

like image 166
Mrchief Avatar answered Oct 20 '22 21:10

Mrchief


Well, you need to try to add some other things like form. But something simple is:

EDIT: Fixed HTML;

<html>
<head>

<script language="javascript">
function mymessage()
{
alert("This message was triggered from the onunload event");
}
</script>
</head>

<body onbeforeunload="mymessage()">

<p>close this window and watch the warning box come up!</p>
</body>

</html>
like image 40
Igoris Azanovas Avatar answered Oct 20 '22 21:10

Igoris Azanovas