【问题标题】:Is there an alternative method to use onbeforeunload in mobile safari?是否有在移动 Safari 中使用 onbeforeunload 的替代方法?
【发布时间】:2011-09-06 13:15:52
【问题描述】:

在 mobile-safari 中是否有替代方法可以代替 onbeforeunload?我注意到 Google 能够在 mobile-safari 中捕获 onbeforeunload 事件。有没有人弄清楚他们是怎么做到的?

Google 能够使用他们的 gmail 客户端做到这一点。创建一条新消息...在文本区域中输入一些内容...点击浏览器的后退按钮。它会弹出一条警告消息。我使用 iPad 进行测试。

【问题讨论】:

  • 同时存在 onunload 和 onbeforeunload 你能澄清一下你到底想要完成什么吗?
  • Mobile safari 似乎没有 onbeforeunload。至于 google 如何在 gmail 中模拟它,他们似乎使用了 iframe 的 onunload 确认技巧。请参阅 danny armstrong 的回答:stackoverflow.com/questions/3239834/… 我认为当您点击后退按钮和上一个 gmail 页面时,该页面实际上可能会卸载从那里无缝拾取。尝试在 gmail 中复制回复 URL,转到不相关的域,转到复制的 URL,在消息中输入内容,然后尝试返回.. 确认未启动!
  • 也许不是你要找的东西,但仅供参考,我有一个关于如何reliably detect beforeunload support的建议

标签: javascript ios mobile-safari onbeforeunload


【解决方案1】:

使用pagehide事件(reference

【讨论】:

  • pagehide 不允许您添加确认弹出窗口,这就是原始问题的内容(对不起!)
  • 在投反对票之前请阅读问题:“在 mobile-safari 中是否可以使用替代方法来代替 onbeforeunload?”。该对话框只是一个测试它的示例。
【解决方案2】:

我猜他们正在使用 History API。通过收听popstate

window.addEventListener("popstate", function(e) { ... });

您可以在允许做任何愚蠢的事情之前显示警告。

【讨论】:

  • 嗨 - 这似乎不起作用:window.addEventListener("popstate", function(e) { alert("hi")});在 ipad 上没有任何作用。我看到这个答案是 5 年前(!)虽然!
猜你喜欢
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多