Home > Web Front-end > JS Tutorial > body text

A brief discussion on onbeforeunload and onunload events in JavaScript_Basic knowledge

WBOY
Release: 2016-05-16 15:26:22
Original
1182 people have browsed it

In a recent project, I need to cache part of the content of the page when the user leaves the page. However, I don’t need to cache it when the user refreshes. I only want it to be cached when the user leaves. time

Execute this function. According to Baidu, there are two events: onbeforeunload and onunload, but onbeforeunload will also be executed when the user refreshes. It took me a long time to do this, so I want to make a small summary here

onbeforeunload and onunload events

onbeforeunload definition and usage

The onbeforeunload event is triggered when the current page is about to be left (refreshed or closed).

This event can be used to pop up a dialog box to prompt the user whether to continue browsing the page or leave the current page.

The default prompt message of the dialog box varies according to different browsers. The standard message is similar to "Are you sure you want to leave this page?". This information cannot be deleted.

But you can customize some message prompts to be displayed in the dialog box together with the standard information.

Note: If you do not specify the onbeforeunload event on the element, you need to add the event on the window object and create custom information using the returnValue attribute (see the following syntax example).

Note: In the Firefox browser, only the default reminder information is displayed (customized information is not displayed).

How to use:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body onbeforeunload="return test()">
   
</body>
<script type="text/javascript">
  function test(){
    return "你确定要离开吗";
  }
</script>
</html>
Copy after login

or:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body>
   
</body>
<script type="text/javascript">
window.onbeforeunload=function(){
  return "你确定要离开吗";
}
 
</script>
</html>
Copy after login

When the event is triggered, a dialog box with confirmation and cancellation pops up. If you confirm, you will leave the page, and if you cancel, you will continue to stay on this page. Of course you can customize the prompt text.

So, what should I do when I only need to execute this function when I leave, but not when refreshing?

window.onbeforeunload = function() {
 
    var n = window.event.screenX - window.screenLeft;
 
    var b = n > document.documentElement.scrollWidth - 20;
 
    if (!(b && window.event.clientY < 0 || window.event.altKey)) {
      //window.event.returnValue = "真的要刷新页面么?";
      
      //这里放置我想执行缓存的代码
      cacheFunction();
      
    }
 }
Copy after login

In this way, when I leave the page, I can execute my cache code without popping up the prompt box. When I refresh, the prompt box will not pop up and it will not be executed. It is worth mentioning that at this time, ajax should be set to synchronization, that is: async in ajax should be changed to: false;

Browser compatibility

Perfect support for IE, Chrome and Safari

Firefox does not support text reminder messages

Opera does not support

Bugs encountered by IE6 and IE7 when using onbeforeunload

2. Onunload definition and usage

The onunload event occurs when the user exits the page.

Usage is similar to onbeforeunload

window.onunload = function(){
  return "你确定要离开吗"
}
 
Copy after login

Browser compatibility

In IE6, IE7, IE8, it will be executed after refreshing the page, closing the browser, and after page jump;

IE9 will execute the page refresh, but the page jump and closing the browser will not execute;

firefox (including firefox3.6) can be executed after closing the tag, after page jump, and after refreshing the page, but it cannot be executed after closing the browser;

Safari will execute after refreshing the page and page jump, but it will not execute when closing the browser;

Opera and Chrome will not be executed under any circumstances.

Summary

Onunload and onbeforeunload are called when refreshing or closing. They can be specified through window.onunload in the

Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template