5

What I am trying to do is make a pop-up box any time a page exits or is navigated away from. Right now I have

<script type="text/javascript">
function box()
{
    var r=confirm("Message");
    if (r==true)
    {
        window.location.href="yes.html";
    }
    else
    {
        window.location.href="no.html";
    }
}
</script>


<body onunload="box();">

I have 2 problems with this:

  1. It only shows the box if you actually navigate away from the page, refresh, new url etc. If you exit the tab or browser, the box doesnt pop up.

  2. No matter what button you press, it just sends you where you tried to go originally, it never sends you to no.html or yes.html.

Could someone tell me how this is possible?

Andrew Whitaker
  • 124,656
  • 32
  • 289
  • 307
CJ Sculti
  • 759
  • 3
  • 12
  • 21
  • Does this answer your question? [Best way to detect when a user leaves a web page?](https://stackoverflow.com/questions/147636/best-way-to-detect-when-a-user-leaves-a-web-page) – ggorlen Jan 04 '20 at 13:52

1 Answers1

8

Try this:

<script type="text/javascript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
      setTimeout(function() {
        setTimeout(function() {
           window.location.href="yes.html";
        }, 1000);
    },1);
    return "Message";
  }
</script>

You can only catch the stay on the page option, you cannot override a user leaving the page. similar to: Way to know if user clicked Cancel on a Javascript onbeforeunload Dialog?

Community
  • 1
  • 1
Glennular
  • 17,827
  • 9
  • 58
  • 77