有没有办法在Mobile Safari for iOS设备上使用window.onbeforeunload?

看起来像Apple已经禁用iOS设备(iPhone,iPad,iPod Touch)的window.onbeforeunload事件。 不幸的是,我找不到任何文档,为什么这个事件不能在移动Safari浏览器中工作。

有谁知道是否有一个可靠的替代这个function? Android的浏览器似乎支持它,Safari桌面应用程序也支持onbeforeunload事件没有问题。

我看到这是一个古老的问题,但我最近面临这个问题。

我正在使用window.unload ,它在ios浏览器中工作正常(虽然如果你看看苹果文档,它似乎已被弃用,他们build议使用document.pagehide

如果你真的需要它,你不能得到所有的链接,表单和DOM对象,有一个处理程序更改url,并让这些等待,直到你做了你想要的。 对于链接,通过getElementsByTagName获取它们,检查href是否以#开头,然后添加onbeforeunload函数add onclick(在查看href之前调用它)。 同样的forms,但与onsubmit。 最后,对于使用JavaScript更改href的元素,您应该确保何时添加您调用onbeforeunlaod函数的lsitener(或者,如果使用DOM0或DOM1侦听器,则可以添加一些类,然后使用全局脚本它用类检查所有元素,并用闭包将其添加到事件侦听器。

但是你通常应该能够避免使用这个事件(可能使用cookie来存储你想要发送的东西每X秒,并允许,最坏的情况下,看看下一次用户加载页面,在最好的情况下,能够在onbeforeunload或者onunload上发送一个Ajax请求,即使它只发送http头,你也可以得到你想要的。