2010-02-25 24 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。

该字符串将作为您的自定义消息。