Javascript IE在收到302后继续执行JS?

Javascript IE在收到302后继续执行JS?,javascript,internet-explorer,comet,lift,Javascript,Internet Explorer,Comet,Lift,所以,我遇到了一个有点奇怪的问题,我希望有一些IE专家能够解释这种行为。我的公司运行实时电梯应用程序。我们使用comet模型在浏览器和服务器之间进行实时通信,这是Lift的标准。还值得注意的是:如果comets与服务器不同步(由于连接问题或服务器重新启动,任何可能会终止服务器上会话的事情),服务器将使用document.location.reload()响应comet请求重新加载页面,启动新会话,等等 现在,为了确保正常注销,我们有一个特殊的url(/session/logout),它完成所有与

所以,我遇到了一个有点奇怪的问题,我希望有一些IE专家能够解释这种行为。我的公司运行实时电梯应用程序。我们使用comet模型在浏览器和服务器之间进行实时通信,这是Lift的标准。还值得注意的是:如果comets与服务器不同步(由于连接问题或服务器重新启动,任何可能会终止服务器上会话的事情),服务器将使用
document.location.reload()响应comet请求
重新加载页面,启动新会话,等等

现在,为了确保正常注销,我们有一个特殊的url(/session/logout),它完成所有与会话相关的清理,然后将您踢回我们的主页。这可以通过单击指向该URL的锚来触发,或者如果您尝试执行要求您注销的操作,服务器可能会向您发出指向该URL的302。很简单,对吧?在大多数浏览器中,这非常有效,因为工作流如下所示:

  • 用户单击注销按钮或服务器向/session/logout发送302
  • 当前页面上的Javascript执行停止,因此所有Comet都将关闭
  • 浏览器加载/会话/注销
  • 浏览器从服务器收到302条消息(表示会话清理已完成),将用户踢到主页
  • 浏览器加载主页
  • 然而,在IE中,我们看到以下行为:

  • 用户单击注销按钮或服务器向/session/logout发送302
  • 浏览器开始加载/会话/注销
  • 浏览器从服务器收到302条消息(表示会话清理已完成),将用户踢到主页
  • 浏览器开始加载主页
  • Comets接收一个
    document.location.reload()将中止主页加载,并且在用户未登录的情况下重新加载当前页面
  • 这是完全不可取的,因为我们需要加载/session/logout的正确结果--,特别是在用户试图做一些登录时无法做的事情的情况下(在这种情况下,注销返回的302将指向他们最初尝试去的地方)


    以前有人遇到过这种问题吗?关于如何处理这个问题有什么建议吗?

    我对comet一无所知,但你应该更明确地说明comet的关闭


    我建议捕获window.onbeforeunload事件并显式关闭comet,而不是依赖浏览器来完成这项工作。

    什么版本的IE?标准模式与否?IE8和IE9都在标准模式下运行,表现出这种行为。不幸的是,这不起作用。似乎是因为IE决定它实际上不想转到其他页面,所以onBeforeUnload没有被调用,我仍然看到重新加载行为(