Art*_*ano 76 javascript onbeforeunload ipad ios
有谁知道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);
Run Code Online (Sandbox Code Playgroud)
结果分别是:
trueobjectnull因此,浏览器确实具有该属性,但由于某种原因它不会被触发.
我尝试离开页面的方法是单击后退和前进按钮,在顶部栏中进行谷歌搜索,更改地址栏中的位置,以及单击书签.
有没有人知道发生了什么?我非常感谢任何意见.
谢谢
Dan*_*ong 19
我发现onunload()事件会触发.这种行为有点奇怪; 你在附加到事件的回调函数中拥有的任何东西实际上是在新页面加载到后台后运行的(你不能告诉它已加载,但服务器日志记录会显示它已经加载).
更奇怪的是,如果你的onunload()中有一个confirm()调用,并且用户点击了一个链接去了其他地方,你就可以了.但是,如果用户关闭iPad Safari浏览器选项卡,则会触发onunload()事件,但您的confirm()将作为响应隐式取消.
Dan*_*ger 11
这些JavaScript适用于ipad和iphone上的Safari和Chrome,以及台式机/笔记本电脑/其他浏览器:
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!
...
} );
Run Code Online (Sandbox Code Playgroud)
只有 Apple 会确切知道,但我的猜测是他们故意没有在移动 Safari 中启用该功能,因为它最常被黑幕角色用来让您留在他们的网站上或弹出大量色情/广告窗口。
| 归档时间: |
|
| 查看次数: |
41487 次 |
| 最近记录: |