检测浏览器是不是正在执行重定向

Posted

技术标签:

【中文标题】检测浏览器是不是正在执行重定向【英文标题】:Detect if browser is performing a redirect检测浏览器是否正在执行重定向 【发布时间】:2015-11-27 21:56:48 【问题描述】:

在我的项目中,每次出现错误时都会显示一条警告消息。 这不是什么花哨的东西,只是触发事件时的一些 jquery 转换。 我有一些页面在加载时会通过 get 请求获取一些数据。 当我进行重定向或重新加载时,与服务器的连接失败并触发出现警告。 我相信这种行为会让用户感到困惑。

有没有办法检测浏览器何时执行重定向或重新加载以禁用警告?

编辑 1 我收到错误消息,因为浏览器由于重定向/重新加载而断开与服务器的连接。 因此,在我的控制台中出现错误是合乎逻辑的。 不合逻辑的事情是对浏览器为了完成我的请求而必须做的事情发出警告。 我不需要事件,我需要一种检查浏览器状况的方法。

编辑 2 我应该早点说,但是在重定向或重新加载完成之前会显示警告。

【问题讨论】:

我个人更关心服务器错误,但在回答您的问题时没有“重定向后”事件或类似事件。您可以设置一个 cookie before 重定向,如果该 cookie 值存在则不显示错误(当然,每次检查时都清除它)。 @Archer 你能检查我的更新吗? 重新加载与第一次访问页面有何不同?我不明白为什么会出现服务器错误,我认为你会花时间更好地解决这个问题,而不是用其他东西隐藏它。在您的问题更新后,我的 cookie 建议仍然会做“其他事情”。 @Archer 当您离开具有活动连接的页面时,浏览器会切断连接。这是正确的,因为您要离开页面并且不再需要连接。实际上没有错误,javascript将其作为错误处理。当我向他指示放弃他正在执行的所有操作以执行重定向时,我无法阻止浏览器关闭连接。 在下一页加载时关闭连接不应强制出错,这就是您的问题听起来像您所说的那样。您现在是说在重定向或重新加载之前收到错误吗? 【参考方案1】:

由于我找不到检测浏览器状态的方法,我决定使用我试图避免的 jquery beforeunload 事件。 使用此事件解决方案很简单。

第 1 步创建一个设置为 true 的控件 var;

example = true;

第 2 步绑定 before unload 事件以反转 var。

$(window).bind('beforeunload', function()
    example  = false;
);

第 3 步在执行代码之前检查您的 var。

if(example)
  controlled code...

代码将在浏览器静止时执行,但在执行重定向或重新加载时将被禁用。

【讨论】:

以上是关于检测浏览器是不是正在执行重定向的主要内容,如果未能解决你的问题,请参考以下文章

检测 iOS 是不是正在使用 webapp

PHP 浏览器检测和重定向

如何检测服务器端是否禁用cookie

.htaccess 重定向仅在浏览器警告后执行

ini NGINX配置,用于检测和重定向不支持的浏览器

检测是不是在手机上运行[重复]