onbeforeunload似乎在Safari或Chrome中不起作用

时间:2011-07-28 02:09:35

标签: javascript google-chrome safari onbeforeunload

我正在撰写此页面:http://www.weloveflyers.co.uk/order.php

有人输入订单详情后点击“让我们走!”捕获订单信息,显示供他们检查,然后“立即付款!”按钮出现在底部(尝试它,你不需要支付任何东西,只是这样你就可以看到我的意思)

我不想在他们点击Let's Go按钮之前阻止任何人离开页面,但是如果他们已经点击了“Let's Go!” (即下订单)但尚未点击“立即付款!”我希望能够与他们核实“你真的想离开吗?如果你没有付款就离开,你的订单将被取消!”

在进入确定它仅在订单已经放置时起作用的复杂性之前,我尝试了一个非常基本的onbeforeunload设置,只是为了看看浏览器是否支持它。我似乎在Safari中偶尔支持这个功能,通常它不起作用,但偶尔也会这样,而在Chrome中它根本不起作用。

任何人都可以提供任何帮助或建议,我们将非常感激!

谢谢,

菲尔

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

更新:这是最新的尝试:

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

1 个答案:

答案 0 :(得分:6)

根据MDN documentation,我刚刚在Chrome 11(和13)以及OS X上的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?