首頁  >  文章  >  web前端  >  在js中如何實現關閉網頁出現離開提示(詳細教學)

在js中如何實現關閉網頁出現離開提示(詳細教學)

亚连
亚连原創
2018-06-21 19:05:056069瀏覽

這篇文章主要帶給大家一個JS實用功能,監聽瀏覽器在關閉的時候提示出是否要離開的小功能,需要的朋友學習下吧。

大家是否常常遇到在關閉網頁的時候,會看到一個確定是否離開目前頁面的提示框?想一些線上測試系統、資訊輸入系統等就經常會有這一些提示,避免用戶有意或無意中關掉了頁面,導致資料遺失。這裡面的實作過程很簡單,利用了HTML DOM事件中的onunload和onbeforeunload方法。

unload 事件屬性

定義:當使用者解除安裝文件時執行一段JavaScript,例如:

// body
<body onunload="goodbye()">
//window
window.onbeforeunload=function(e){     
  var e = window.event||e;  
  e.returnValue=("确定离开当前页面吗?");
}

用法:當使用者離開頁面時,會發生unload 事件。注意:如果您重載頁面,也會觸發 unload 事件(以及 onload 事件)。

觸發於:

關閉瀏覽器視窗透過地址欄或收藏夾前往其他頁面的時候點擊返回,前進,刷新,主頁其中一個的時候點擊一個前往其他頁面的url連接的時候呼叫以下任一事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit. 當用window open打開一個頁面,並把本頁的window的名字傳給要開啟的頁面的時候。重新賦予location.href的值的時候。透過input type="submit"按鈕提交一個有指定action的表單的時候。 onbeforeunload 事件屬性

定義:當即將離開目前頁面(刷新或關閉)時執行JavaScript,例如:

//body
<body onbeforeunload="goodbye()">
//window
window.onbeforeunload=function(e){     
  var e = window.event||e;  
  e.returnValue=("确定离开当前页面吗?");
}

用法:onbeforeunload 事件在即將離開目前頁面(刷新或關閉)時觸發。此事件可用於彈出對話框,提示使用者是繼續瀏覽頁面還是離開目前頁面。對話方塊預設的提示訊息會根據不同的瀏覽器有所不同,標準的資訊類似 "確定要離開此頁嗎?"。該資訊不能刪除。但你可以自訂一些訊息提示與標準資訊一起顯示在對話框中。注意: 在 Firefox 瀏覽器中,只顯示預設提醒訊息(不顯示自訂訊息)。

觸發於: 

關閉瀏覽器視窗  透過網址列或收藏夾前往其他頁面的時候  點擊返回,前進,刷新,主頁其中一個的時候  點擊一個前往其他頁面的url連接的時候  呼叫以下任一事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.  當用window openFind,location replace,location reload,form submit.  當用window openFind,location replace,location reload,form submit.  當用window open打開一個頁面,並把本頁的window的名字傳給要開啟的頁面的時候。  重新賦予location.href的值的時候。  透過input type=”submit」按鈕提交一個有指定action的表單的時候。

 瀏覽器支援程度

目前主流瀏覽器都支援這兩個事件屬性

 

概述

onunload ,onbeforeunload都是在刷新或關閉時調用,可以在3f1c4e4b6b16bbbd69b2ee476dc4f83a腳本中透過window.onunload來指定或在6c04bd5ca3fcae76e30b72ad730ca86d裡指定。差別在於onbeforeunload在onunload之前執行,它也可以阻止onunload的執行。 onbeforeunload也是在頁面刷新或關閉時調用,onbeforeunload是正要去伺服器讀取新的頁面時調用,此時還沒開始讀取;而onunload則已經從伺服器上讀到了需要加載的新的頁面,在即將替換掉當前頁面時調用。 onunload是無法阻止頁面的更新和關閉的,而 onbeforeunload 可以做到。

附:

頁面載入時只執行onload 

頁面關閉時先執行onbeforeunload,最後onunload 

頁面刷新時先執行onbeforeunload,然後onunload ,最後onload  

附上部分效果圖:

綁定body標籤的程式碼:

<!DOCTYPE html>
 <head>
  <meta charset="UTF-8">
  <title>测试</title>
  <script>
    function checkLeave(){
      event.returnValue="确定离开当前页面吗?";
    }
   </script>
 </head>
 <body onbeforeunload="checkLeave()">
  测试
 </body>
</html>

Google瀏覽器下的效果:

點擊刷新按鈕:

點選返回按鈕:

#透過工作列或收藏夾前往其他介面:

關閉頁面:

#edge下的效果:

##點擊刷新按鈕:

点击返回按钮:

关闭页面:

 注:在新版的火狐浏览器(我是用的版本: 57.0 )里面,上面这种写法不生效?!

绑定window对象的代码:

<!DOCTYPE html>
 <head>
  <meta charset="UTF-8">
  <title>测试</title>
  <script>
    window.onbeforeunload=function(e){  
     var e = window.event||e; 
     e.returnValue=("确定离开当前页面吗?");
   } 
   </script>
 </head>
 <body>
  测试
 </body>
</html>

火狐下的效果:

点击刷新按钮:

点击返回按钮:

关闭页面:

 

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在JavaScript中如何使用Generator的方法

在node中如何实现更改头像

在react-router中刷新页面出现404问题

详细介绍Vue事件修饰符capture的使用

以上是在js中如何實現關閉網頁出現離開提示(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn