检测javascript对话框按钮是否单击并重定向

检测javascript对话框按钮是否单击并重定向,javascript,Javascript,嘿,伙计们,我正在向用户显示一个javascript对话框,使用window.onbeforeunload来处理用户单击后退按钮的情况。 我的代码工作到了一定程度,但如果用户单击“离开此页面”,我很难重定向用户。不同浏览器中的消息不同 // Set check var false to begin with // This is set true on submit btns using onclick event submitFormOkay = false; // If we are on

嘿,伙计们,我正在向用户显示一个javascript对话框,使用window.onbeforeunload来处理用户单击后退按钮的情况。 我的代码工作到了一定程度,但如果用户单击“离开此页面”,我很难重定向用户。不同浏览器中的消息不同

// Set check var false to begin with
// This is set true on submit btns using onclick event
submitFormOkay = false;

// If we are on check-availability page
if( window.location.href.indexOf( 'check-availability' ) != -1 )
{
     // If back button is clicked
     window.onbeforeunload = function()
     {
          // Only show dialog if submit btn wasn't clicked
          if (!submitFormOkay)
          {
               // Show dialog
               return "Use of the browser back button will lose form data.\nPlease    use the 'Previous' button at the bottom of the form.";

               // If 'leave' this page was clicked'
               // do 'window.location = window.location'
          }
     }
}
提前谢谢


David

如果他们单击“离开此页面”,则浏览器将完成用户在弹出对话框之前尝试执行的任何操作

但如果他们真的返回,他们仍然会在你的网站上,对吗?因此,只要不缓存页面,就可以在重新请求该页面时执行任何需要执行的操作


换句话说。。。在服务器端检测用户是否单击了“上一步”,然后执行如果他们单击了“上一步”您会执行的操作。

嗨,joey,谢谢。我希望能够使用javascript进行检测。我想我可以按照你的建议做,只是意味着我必须再次侵入这个drupal表单api!谢谢你的帮助,乔伊,我不是故意说不感激的!没问题。不幸的是,如果用户决定忽略您的警告,您无法覆盖用户的行为。但至少你得警告他们,所以不管发生什么都是他们自己的错!您可以采用的一种方法是,在第一次调用onbeforeunload时,通过向页面添加新的或使用XMLHttpRequest向服务器发布消息。这样,服务器就会知道用户试图离开。但是,如果你在使用Drupal的话,这可能是过分了。