导航开始后IE11警报取消导航

时间:2014-03-20 18:55:43

标签: javascript internet-explorer javascript-events internet-explorer-11

当您单击其中window.location设置为具有查询字符串参数的另一个URL的选项卡时,我们有一些用于导航的javascript。这个URL基本上是:

  1. 检查用户是否已登录
    1. 如果不是,请将其重定向到错误页面以重新登录
    2. 如果是,请将其记录下来并继续下一步
  2. 将它们重定向到另一个系统的另一个URL,然后将其登录到该系统
  3. 如果下一个系统需要一些时间来完成请求,浏览器就会坐在那里并带有加载图标,用户可能会感到不耐烦并再次单击该选项卡。如果他们这样做,则第二步完成第一步,现在他们从步骤1.2的初始处理中退出,他们未通过检查并最终遵循1.1的路径。

    我们采用的解决方法非常简单。我们将window.location放入一个IF语句中,该语句检查一个人是否已经点击选项卡并且导航已经被启动。如果没有,那么它执行window.location设置。如果是这样,那么我们打电话给#34;警告('请耐心等待#39;);"。这似乎适用于除IE11之外的每个浏览器,即便如此,仅当F12开发控制台未打开时。如果你打开它,它工作正常。

    但是如果你不这样做,由于某种原因警报弹出窗口最终会取消导航,而页面永远不会到达任何地方。几乎就像你按下逃生一样,或点击了"停止"按钮。有时也会出现下一页加载的奇怪场景,但它认为警报窗口仍处于打开状态,但事实并非如此。我可以在任务管理器中看到额外的任务,但它不可见。

    有人听到或看到过这样的事吗? 请注意,我知道除了使用警报之外,还有其他方法可以处理这种情况。我不是在寻找有关如何以不同方式完成消息的建议。我更感兴趣的是找出是否有任何体面的文档可以向我解释为什么页面开始卸载后的警报可能会在IE11中以这种方式表现,并且只有当F12不是'打开。

    谢谢!

    编辑添加代码示例

    var navigatingTo;
    function doNavigation(destination){
      if (navigatingTo && navigatingTo != ""){
        alert(navigatingTo);
      } else {
        navigatingTo = "Please be patient\nNavigating to " + destination;
        window.location = "/somepage.aspx?d=" + destination;
      }
    }
    

0 个答案:

没有答案