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

onbeforeunload doesn't seem to work in Safari or Chrome

本文关键字:不起作用 Chrome Safari onbeforeunload      更新时间:2023-09-26

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

当某人输入他们的订单细节并点击"Let's Go!"后,订单信息被捕获,显示供他们检查,然后在底部出现一个"立即支付!"按钮(尝试一下,你不需要支付任何东西,只是为了让你可以看到我的意思)

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

在我进入复杂的确保它只在已经下订单时起作用之前,我只是尝试了一个非常基本的onbeforeunload设置,只是为了看看浏览器是否支持它。我似乎在Safari中得到了零星的支持,通常它不起作用,但偶尔会起作用,而在Chrome中它根本不起作用。

任何人可以提供的任何帮助或建议都将不胜感激!

谢谢,菲尔

注:对于你的信息,我已经删除了所有的onbeforeunload功能从实时页面现在,因为我不想惹恼游客,直到我得到了正确的,它确实是我想要的。

UPDATE:这里是最新的尝试:

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

根据MDN文档,我刚刚在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 ?