当用户尝试按下后退按钮或使用 Firefox 时,如何添加警报? (Javascript)

Posted

技术标签:

【中文标题】当用户尝试按下后退按钮或使用 Firefox 时,如何添加警报? (Javascript)【英文标题】:How do I add an alert when the user tries to press the back button or is using firefox? (Javascript) 【发布时间】:2010-12-15 09:36:33 【问题描述】:

只需要一点 javascript 就可以警告按下后退按钮的人,这可能会用确定/取消按钮搞砸他们的交易,并且还需要一种检测他们是否使用任何版本的 firefox 的方法。

【问题讨论】:

【参考方案1】:

您可以使用http://www.sajithmr.me/warning-before-navigate-away-from-a-page/ 之类的内容来检查用户是否即将离开该页面。我不确定是否有专门针对后退按钮的解决方案。

【讨论】:

【参考方案2】:

关于您的浏览器检测问题,我不太喜欢使用基于用户代理的浏览器检测,最好在 onLoad 上进行功能测试。但是,如果您只是想查看是否有人在使用(或说他们正在使用)Firefox,您可以解析 useragent 字符串。这是来自 jQuery 1.3.2 源代码的一个示例:

var userAgent = navigator.userAgent.toLowerCase();

// Figure out what browser is being used
jQuery.browser = 
    version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
    safari: /webkit/.test( userAgent ),
    opera: /opera/.test( userAgent ),
    msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
    mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
;

【讨论】:

【参考方案3】:

这个 SO 问题:Detecting Back Button/Hash Change in URL 将回答您的大部分问题。

检测后退按钮是一项棘手的工作,因为它与关闭窗口的行为相同。

您可以使用onbeforeunload 事件处理程序来处理此问题,但就像我说的那样,这有点棘手。

【讨论】:

【参考方案4】:

back-break 和 UA-sniffing 都是巨大的代码气味。

当用户返回事务中的一个步骤时,正确编码的 Web 应用程序不应该“搞砸”。如果是这样,您可能会遇到一系列并发问题,这会使您的网站使用起来不愉快。

UA 嗅探非常麻烦,容易出现误报和误报,如果在服务器端进行,还会出现代理问题。您想要检测 Firefox 的原因是什么?如果您正在尝试解决特定的 Firefox 问题,几乎可以肯定有一种更好的方法专注于该功能,而不是尝试检测特定的浏览器。

【讨论】:

以上是关于当用户尝试按下后退按钮或使用 Firefox 时,如何添加警报? (Javascript)的主要内容,如果未能解决你的问题,请参考以下文章

按下后退按钮时未调用Android onUserLeaveHint()

按下后退按钮后,navigationController 为 NULL

在iOS中按下后退按钮时如何创建确认弹出窗口?

使用 JavaScript 按下浏览器后退按钮时重定向到 URL

按下后退按钮时如何退出?

按下后退按钮时,自动折叠移动设备上的下拉导航栏菜单