JavaScript确认对话框在取消事件时继续重新生成

时间:2017-06-03 07:36:34

标签: javascript jquery html

情景:我只想警告用户换窗户;所以我使用了jQuery的窗口模糊& JavaScript确认对话框。当用户单击“确定”按钮时,应用程序将重定向到另一个页面&当用户点击取消按钮时,什么都不会发生。他可以在同一页上继续他的工作。

问题:确定按钮工作正常但当我点击取消按钮时,浏览器会继续重新生成对话框。我该怎么做呢?

代码

$(window).blur( function (e) {

        var closeWindow = window.confirm("Your test will be cancelled if you switch the tabs.");

        if (closeWindow) {

            // redirect to another page

        }
        else {

            // do nothing.
        }
});

1 个答案:

答案 0 :(得分:0)

正如@ROAL解释的那样,第一个模糊事件是因为实际模糊,而休息则是因为浏览器试图离开标签。一个简单的解决方案是使用标志来区分用户生成的事件和浏览器生成的事件。试一试:

var manualCancellation = false;
$(window).blur( function (e) {
    if(!manualCancellation ){

      var closeWindow = window.confirm("Your test will be cancelled if you switch the tabs.");
      console.log(e);
      if (closeWindow) {

          // redirect to another page

      }
      else {
          manualCancellation = true;
          // do nothing.
      }
    } else {
        // Reset the value of manualCancellation so that the event is fired the next time.
      manualCancellation = false;

    }
});