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

问题描述:

只需要一点点Javascript来警告那些按下后退按钮的人,它可能会使用Ok/Cancel按钮搞砸他们的交易,并且还会检测他们是否使用任何版本的Firefox。如何在用户尝试按下后退按钮或使用Firefox时添加警报? (Javascript)

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

+0

这样做,欢呼声; D – NibblyPig 2009-11-11 09:23:52

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

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

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

至于你的浏览器检测问题,我不太喜欢使用基于用户代理的浏览器检测,它更好地做功能测试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) 
}; 
+0

非常感谢! – NibblyPig 2009-11-11 09:26:50

破裂和UA嗅探都是一种巨大的代码味道。

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

UA嗅探非常麻烦,容易出现误报和否定,并且如果在服务器端完成代理问题。你想检测Firefox的原因是什么?如果您尝试解决某个特定的Firefox问题,那么几乎可以肯定的是,专注于该功能的更好方法,而不是尝试检测特定的浏览器。