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

标签 javascript google-chrome safari onbeforeunload

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

在有人输入他们的订单详细信息后,点击“开始吧!”订单信息被捕获,显示给他们检查,然后是“立即付款!”按钮出现在底部(试试吧,你不需要支付任何费用,只是为了让你明白我的意思)

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

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

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

谢谢,

菲尔

附言供您引用,我现在已经从实时页面中删除了所有 onbeforeunload 功能,因为在我做对并且它完全符合我的要求之前,我不想惹恼访问者。

更新:这是最新的尝试:

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

最佳答案

根据 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?

关于javascript - onbeforeunload 在 Safari 或 Chrome 中似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853400/

相关文章:

java - 为 JavaScript 编写 JSTL 代码

javascript - 在 Chrome 中获取大型 AJAX 响应而不会崩溃

我网站的 CSS 在 chrome 中损坏

css - Safari 错误地触发 css3 动画

javascript - Safari 扩展中的同步消息传递

objective-c - 使用 ScriptingBridge 和 Objective-C 查找前端 Safari 窗口

javascript - Angular 2 typescript 调用javascript函数

javascript - jqGrid + bootstrap-多选可见性问题

javascript - 为什么单击 div 时选择会消失?

google-chrome - 使用 "navigator.serviceWorker.controller.postMessage"它总是 "TypeError: Cannot read property ' postMessage' of null"