2010-02-25 28 views
6

什麼是使用像計算器和Gmail網站來測試退出頁面的用戶,一旦他們已經開始編輯,並嘗試導航離開的JavaScript代碼/事件(S)?您確定你想瀏覽?

"Are you sure you want to navigate away from this page?" 

回答

8

使用的事件被稱爲onbeforeunload

<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
</head> 
<body> 
    <input id="foo"></input> 

    <script type="text/javascript"> 
     function unloadMessage() { 
      return "Are you sure you want to leave?"; 
     } 

     function setConfirmUnload(enabled) { 
      window.onbeforeunload = enabled ? unloadMessage : null; 
     } 

     $(document).ready(function() { 
      $("#foo").keypress(function() { 
       setConfirmUnload(true); 
      }); 
     }); 
    </script> 
</body> 
</html> 
+0

記住'window.onbeforeunload'在Opera中不起作用,用戶只會在沒有警告的情況下離開。 – 2010-02-25 02:55:10

+0

你確定它是$(「#foo」)。change? 它看起來像改變不會生效,直到該領域失去焦點。 – 2010-02-25 03:39:08

+0

你說得對,它更有意義處理'keypress',而不是'change'。我更新了我的答案。 – 2010-02-25 04:21:48

3

onbeforeunload事件。 Mozilla提供了有用的示例代碼。你只是想有一個函數:

  1. 返回一個字符串
  2. 集e.returnValue該字符串,其中e是參數或window.event。

該字符串將作爲您的自定義消息。