【问题标题】:Javascript onbeforeunload functionJavascript onbeforeunload 函数
【发布时间】:2011-06-02 18:09:43
【问题描述】:

伙计们,我试图在 onbeforeunload 事件上调用此确认函数,但它没有被调用。我在这里想念什么?
我在正文标签内调用它:<body onbeforeunload="confirmation();">
我也试过了:<body onbeforeunload="return confirmation();">

代码:

  function confirmation(){
  var answer = confirm('You have unsaved changes!!');
   if(answer == true)
    {
     alert('Bye Bye!!!');
    }
    else{
      alert('You are staying');
     return false;
    }
   }

【问题讨论】:

  • 您能否澄清您的示例代码或标题以反映您要捕获的事件?
  • onbeforeunload 在哪里? :)
  • 这不是“beforeunload”处理程序的工作方式。 Read this.。就像现在一样,无论您的“confirm()”调用的答案如何,页面都会重新加载。
  • 嗨 tweeZz,我没有发布它。这只是

标签: javascript javascript-events


【解决方案1】:

onbeforeunload 不是这样工作的,代码包含语法错误。

window.onbeforeunload = function (e)
{
    var e = e || window.event,
        message = 'You have unsaved changes!!';

    // For IE and Firefox prior to version 4
    if (e)
    {
        e.returnValue = message;
    }

    return message;
}

【讨论】:

  • 请注意,返回的字符串可能会或可能不会向用户显示。 (在较新的浏览器中不是。)
  • @t0mcat 你是从函数中返回一个字符串,你是在设置事件对象的“returnValue”属性吗?
  • @t0mcat 您所需要的只是 Matt Ball 答案中的代码。就是这样。
  • 你应该将它添加到<script>标签中,而<body>标签上你根本不需要任何东西。
  • 这里有一个关于这个问题的讨论stackoverflow.com/questions/276660/…。我认为这是不可能的:(
【解决方案2】:

太好了.. 当用户在您的页面上进行更改时,您试图要求用户确认,如果他离开页面,这些更改将不会被保存。对吗?

如果是这样,那似乎是可能的。在 SO 上尝试以下操作。开始写这个问题的答案,然后尝试关闭浏览器窗口。

我在 Chrome 12、FF 4.0.1 和 IE 9 中进行了测试。
所有 3 个浏览器都显示一个 弹出 窗口。似乎它们都包含自定义文本。 Chrome 显示 最干净 消息,这意味着只有自定义消息和 2 个按钮的弹出窗口。
在所有 3 种浏览器中,试图以任何 正常 方式关闭浏览器都会触发一个弹出窗口,允许用户选择他是否可能不想留在页面上并完成他开始的事情。如果他真的想离开,他可以。 (杀死浏览器进程或关闭计算机可能不会做你想做的事情:))。

Internet Explorer:

火狐:

铬:

我会尝试连接一个将字符串返回到 window.onbeforeunload 事件的函数的建议。试试this

<script>
window.onbeforeunload = function (evt) {
  var message = 'You have started writing or editing a post.';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
}
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2011-04-16
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多