为了账号安全,请及时绑定邮箱和手机立即绑定

window.onbeforeunload在iPad上不起作用?

window.onbeforeunload在iPad上不起作用?

holdtom 2019-11-13 12:50:22
有人知道onbeforeunloadiPad是否支持该活动,和/或是否有其他使用方式?我已经做了几乎所有的尝试,似乎onbeforeunload从未在iPad(Safari浏览器)上触发该事件。具体来说,这就是我尝试过的方法:window.onbeforeunload = function(event) { event.returnValue = 'test'; }window.onbeforeunload = function(event) { return 'test'; }(以上两者共同)window.onbeforeunload = function(event) { alert('test')'; }(以上所有功能,但内部 <body onbeforeunload="...">所有这些都可以在PC上的FF和Safari上运行,但不能在iPad上运行。此外,在加载页面后,我还完成了以下操作:alert('onbeforeunload' in window);alert(typeof window.onbeforeunload);alert(window.onbeforeunload);结果分别是:trueobjectnull因此,浏览器确实具有该属性,但是由于某种原因它没有被解雇。我尝试离开该页面的方法是单击后退和前进按钮,在顶部栏中进行Google搜索,更改地址栏中的位置,然后单击书签。有谁知道发生了什么吗?我将不胜感激任何输入。谢谢
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

我发现onunload()事件确实触发了。它的行为有些奇怪。附加到该事件的回调函数中的任何内容实际上都是在新页面已在后台加载之后运行的(您无法确定它是否已加载,但是服务器日志记录将显示它已加载)。

更奇怪的是,如果您在onunload()中有一个verify()调用,并且用户单击了链接以转到其他地方,那么您就是在做生意。但是,如果用户关闭iPad Safari浏览器选项卡,则会触发onunload()事件,但您的Confirm()将隐式取消作为响应。


查看完整回答
反对 回复 2019-11-13
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

这部分JavaScript在Safari和Chrome(在ipad和iphone上)以及台式机/笔记本电脑/其他浏览器上对我有效:


var isOnIOS = navigator.userAgent.match(/iPad/i)|| navigator.userAgent.match(/iPhone/i);

var eventName = isOnIOS ? "pagehide" : "beforeunload";


window.addEventListener(eventName, function (event) { 

    window.event.cancelBubble = true; // Don't know if this works on iOS but it might!

    ...

} );


查看完整回答
反对 回复 2019-11-13
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

只有苹果公司可以确定,但是我猜测他们故意没有在移动Safari中启用该功能,因为可疑角色最常使用该功能来使您留在他们的网站上或弹出许多色情/广告窗口。


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 903 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信