Response.Redirect和OnBeforeUnload可以一起玩吗?

Nat*_*art 2 javascript asp.net ajax asp.net-ajax javascript-events

有谁知道如何在OnBeforeUnload事件中检测到服务器端代码发送了Response.Redirect?我想提示用户阻止他们在某个时间之前离开页面,但是当服务器重定向时我不应该提示用户.

我正在使用广泛使用Response.Redirect的遗留代码,我对改变重定向发生的方式不感兴趣.请不要建议我使用X重定向方法.

应该有可能基于XMLHttpRequest对象作为响应重定向应发回一个302响应代码来做到这一点.

编辑: Response.Redirect发回200,在主体中有一个重定向代码,然后在ASP.Net代码中执行window.location.href =新页面.有没有办法得到服务器响应,以确定这已发生?

在此先感谢您的帮助!

Nat*_*art 6

我找到了解决方案.

当PageRequestManager处理来自服务器的响应时,它将设置_processingRequest标志.为了让response.redirect能够通过,我改变了我的javascript以检查它.该事件现在看起来像这样:

window.onbeforeunload = function() {
  var prm = Sys.WebForms.PageRequestManager.getInstance();
  if (!prm._processingRequest){ 
    return "Are you sure you want to leave?";
  }
};
Run Code Online (Sandbox Code Playgroud)