Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Javascript事件附加到mobile Safari后退按钮?_Javascript_Ios_Mobile Safari_Dom Events - Fatal编程技术网

如何将Javascript事件附加到mobile Safari后退按钮?

如何将Javascript事件附加到mobile Safari后退按钮?,javascript,ios,mobile-safari,dom-events,Javascript,Ios,Mobile Safari,Dom Events,当用户在mobile Safari中单击后退按钮时,我需要显示一个确认对话框。我有一个很长的应用程序,我想提醒用户,在他们离开页面之前,他们的应用程序尚未填写/完成。当用户点击链接并试图离开页面时,我已经做好了一切准备,但我一辈子都不知道如何将事件附加到浏览器的后退按钮上onbeforeunload在iOS中不起作用。任何提示都将不胜感激 注意:我意识到警报框是撒旦的产物,但这是我被告知要做的。任何浏览器都不允许控制后退按钮。我怀疑mobile Safari也不例外。在Chrome等桌面浏览器中

当用户在mobile Safari中单击后退按钮时,我需要显示一个确认对话框。我有一个很长的应用程序,我想提醒用户,在他们离开页面之前,他们的应用程序尚未填写/完成。当用户点击链接并试图离开页面时,我已经做好了一切准备,但我一辈子都不知道如何将事件附加到浏览器的后退按钮上<代码>onbeforeunload在iOS中不起作用。任何提示都将不胜感激


注意:我意识到警报框是撒旦的产物,但这是我被告知要做的。

任何浏览器都不允许控制后退按钮。我怀疑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中是如何工作的呢?