猿问

window.onbeforeunload在iPad上不起作用?

有人知道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);

结果分别是:


true

object

null

因此,浏览器确实具有该属性,但是由于某种原因它没有被解雇。


我尝试离开该页面的方法是单击后退和前进按钮,在顶部栏中进行Google搜索,更改地址栏中的位置,然后单击书签。


有谁知道发生了什么吗?我将不胜感激任何输入。


谢谢


holdtom
浏览 904回答 3
3回答

炎炎设计

我发现onunload()事件确实触发了。它的行为有些奇怪。附加到该事件的回调函数中的任何内容实际上都是在新页面已在后台加载之后运行的(您无法确定它是否已加载,但是服务器日志记录将显示它已加载)。更奇怪的是,如果您在onunload()中有一个verify()调用,并且用户单击了链接以转到其他地方,那么您就是在做生意。但是,如果用户关闭iPad Safari浏览器选项卡,则会触发onunload()事件,但您的Confirm()将隐式取消作为响应。

红颜莎娜

这部分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) {&nbsp;&nbsp; &nbsp; window.event.cancelBubble = true; // Don't know if this works on iOS but it might!&nbsp; &nbsp; ...} );

缥缈止盈

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

相关分类

JavaScript
iOS
我要回答