Home Web Front-end JS Tutorial A brief discussion on onbeforeunload and onunload events in JavaScript_Basic knowledge

A brief discussion on onbeforeunload and onunload events in JavaScript_Basic knowledge

May 16, 2016 pm 03:26 PM
onbeforeunload

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do I create and publish my own JavaScript libraries? How do I create and publish my own JavaScript libraries? Mar 18, 2025 pm 03:12 PM

Article discusses creating, publishing, and maintaining JavaScript libraries, focusing on planning, development, testing, documentation, and promotion strategies.

How do I optimize JavaScript code for performance in the browser? How do I optimize JavaScript code for performance in the browser? Mar 18, 2025 pm 03:14 PM

The article discusses strategies for optimizing JavaScript performance in browsers, focusing on reducing execution time and minimizing impact on page load speed.

What should I do if I encounter garbled code printing for front-end thermal paper receipts? What should I do if I encounter garbled code printing for front-end thermal paper receipts? Apr 04, 2025 pm 02:42 PM

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

How do I debug JavaScript code effectively using browser developer tools? How do I debug JavaScript code effectively using browser developer tools? Mar 18, 2025 pm 03:16 PM

The article discusses effective JavaScript debugging using browser developer tools, focusing on setting breakpoints, using the console, and analyzing performance.

Who gets paid more Python or JavaScript? Who gets paid more Python or JavaScript? Apr 04, 2025 am 12:09 AM

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

How do I use source maps to debug minified JavaScript code? How do I use source maps to debug minified JavaScript code? Mar 18, 2025 pm 03:17 PM

The article explains how to use source maps to debug minified JavaScript by mapping it back to the original code. It discusses enabling source maps, setting breakpoints, and using tools like Chrome DevTools and Webpack.

How to merge array elements with the same ID into one object using JavaScript? How to merge array elements with the same ID into one object using JavaScript? Apr 04, 2025 pm 05:09 PM

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

The difference in console.log output result: Why are the two calls different? The difference in console.log output result: Why are the two calls different? Apr 04, 2025 pm 05:12 PM

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...

See all articles