如何将Javascript事件附加到mobile Safari后退按钮?
当用户在mobile Safari中单击后退按钮时,我需要显示一个确认对话框。我有一个很长的应用程序,我想提醒用户,在他们离开页面之前,他们的应用程序尚未填写/完成。当用户点击链接并试图离开页面时,我已经做好了一切准备,但我一辈子都不知道如何将事件附加到浏览器的后退按钮上<代码>onbeforeunload在iOS中不起作用。任何提示都将不胜感激如何将Javascript事件附加到mobile Safari后退按钮?,javascript,ios,mobile-safari,dom-events,Javascript,Ios,Mobile Safari,Dom Events,当用户在mobile Safari中单击后退按钮时,我需要显示一个确认对话框。我有一个很长的应用程序,我想提醒用户,在他们离开页面之前,他们的应用程序尚未填写/完成。当用户点击链接并试图离开页面时,我已经做好了一切准备,但我一辈子都不知道如何将事件附加到浏览器的后退按钮上onbeforeunload在iOS中不起作用。任何提示都将不胜感激 注意:我意识到警报框是撒旦的产物,但这是我被告知要做的。任何浏览器都不允许控制后退按钮。我怀疑mobile Safari也不例外。在Chrome等桌面浏览器中
注意:我意识到警报框是撒旦的产物,但这是我被告知要做的。任何浏览器都不允许控制后退按钮。我怀疑mobile Safari也不例外。在Chrome等桌面浏览器中,您可以拦截页面的离开并显示消息。 除了显示信息,你什么都做不了。出于显而易见的原因,浏览器正在做其余的事情。 不知道这是否也适用于iOS
window.onbeforeunload = function () {
return 'do you really wanna do that?'
}
您可以检查
onpageshow
事件的持久化属性。在初始页面加载时设置为false。从bfcache加载页面时(用户使用“后退”按钮返回),页面设置为true
window.onpageshow = function(event) {
if (event.persisted) {
alert("From back / forward cache.");
}
};
由于某些原因,jQuery在事件中没有此属性。您可以从原始事件中找到它
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
alert("From back / forward cache.");
}
};
我使用onbeforeunload设置了所有这些,但不幸的是,它在iOS中不起作用。iOS不会触发onbeforeunload事件。正如我所说,如果它在iOS上起作用,则无法运行,因为我没有iOS设备,所以无法测试它。至少我提出了一个建议:)history.pushstate和popstate事件允许在各种浏览器中显著检测/修改后退按钮;但它们在iOS中是如何工作的呢?