【问题标题】:onbeforeunload doesn't seem to work in Safari or Chromeonbeforeunload 在 Safari 或 Chrome 中似乎不起作用
【发布时间】:2011-07-28 02:09:35
【问题描述】:

我正在处理这个页面:http://www.weloveflyers.co.uk/order.php

在有人输入他们的订单详细信息后,点击“Let's Go!”订单信息被捕获,显示给他们检查,然后是“立即付款!”按钮出现在底部(试一试,您无需支付任何费用,以便您了解我的意思)

我不想阻止任何人在点击“开始”按钮之前离开页面,但如果他们已经点击了“开始吧!” (即下订单)但尚未点击“立即付款!”我希望能够与他们确认“您真的要离开吗?如果您不付款就离开,您的订单将被取消!”

在确保它仅在已下订单时才起作用的复杂性之前,我尝试了一个非常基本的 onbeforeunload 设置,以查看浏览器是否支持它。我似乎在 Safari 中获得了对这个功能的零星支持,通常它不起作用,但偶尔会起作用,而在 Chrome 中它根本不起作用。

我们将不胜感激地收到任何人可以提供的任何帮助或建议!

谢谢,

菲尔

附:为了您的信息,我暂时从实时页面中删除了所有 onbeforeunload 功能,因为我不想惹恼访问者,直到我做对了并且它完全符合我的要求。

更新:这是最新的尝试:

var needToConfirm = true; 
window.onbeforeunload = confirmExit; 
function confirmExit() {
  if (needToConfirm) 
    return "Message";
}; 

【问题讨论】:

  • 您能否发布您用于绑定 onbeforeunload 事件的代码?
  • 我最近的尝试是使用这个:code/code 在实验过程中,我确实尝试将 needToConfirm 设置为 false,使用“Let's Go!”按钮将其设置为 True,然后使用“立即付款”按钮将其设置回 False,以便仅在适当的时候触发它。
  • 您最近的尝试在 Chrome 中对我来说效果很好。

标签: javascript google-chrome safari onbeforeunload


【解决方案1】:

根据MDN documentation,我刚刚在 OS X 上的 Chrome 11(和 13)和 Safari 5 以及 Windows 7 上的 Chrome 14 中尝试了以下操作,它对我来说很好(就像你上面的代码一样! ):

window.onbeforeunload = function (e) {
  e = e || window.event;

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

  // For Safari
  return 'Any string';
};

如果您在页面中按原样使用上面的代码会发生什么?

您使用的是什么版本的 Chrome 和 Safari?

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多