首页 文章

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

提问于
浏览
40

看起来Apple已禁用iOS设备(iPhone,iPad,iPod Touch)的window.onbeforeunload事件 . 很遗憾,我找不到任何关于此事件在Mobile Safari中无效的文档 .

有谁知道这个功能有可靠的替代方案吗? Android的浏览器似乎支持它很好,Safari桌面应用程序也支持onbeforeunload事件没有问题 .

2 回答

  • 15

    我看到这是一个老问题,但我最近遇到了这个问题 .

    我正在使用 window.unload 并且它在ios浏览器中工作正常(虽然如果你看Apple documentation它似乎已被弃用,他们建议使用 document.pagehide

  • 1

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

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

相关问题