当按钮事件中 window.location 更改时,IE9 onbeforeunload 被调用两次...最小再现

2024-01-03

我一直在锤击这个问题,但一无所获。

我有一个取消按钮,执行“window.location = '404.htm';”当点击时。 onbeforeunload 处理程序会触发两次,但前提是用户在第一个对话框中单击“留在此页面”。正常的导航(页面刷新、转到主页) onbeforeunload 处理程序仅触发一次。

我成功地用最少的 HTML 和脚本重现了该行为:

<!DOCTYPE html>
<html>
<head>
    <title>Test page</title>
</head>
<body onbeforeunload="return 'Unsaved changes';">
    <form name="form1" id="form1">
        <input id='cmdCancel' type="button" value="Cancel" onclick="window.location = '404.htm';" />
    </form>
    <script type="text/javascript">
        /*
         * Connecting the events via code makes no difference
         *
        document.forms[0].cmdCancel.onclick =
            function () {
                alert('Clicked cancel. About to navigate...');
                window.location = '404.htm';
            };

        window.onbeforeunload = function () {
            return "Unsaved changes";
        }; 

        */   
    </script>
</body>
</html>

有很多“onbeforeunload 调用两次”的点击,但没有最小的复制,也没有实际的解决方案。

有什么建议么?

Thanks!


试试这个,这对我有用。该解决方案最初由 Amit 发布于http://social.msdn.microsoft.com/Forums/eu/sharepointinfopath/thread/13000cd8-5c50-4260-a0d2-bc404764966d?prof=required http://social.msdn.microsoft.com/Forums/eu/sharepointinfopath/thread/13000cd8-5c50-4260-a0d2-bc404764966d?prof=required

请记住,暂时禁用 onbeforeunload 并在一段时间后重新启用它是关键。

var checkChangesEnabled = true;

window.onbeforeunload = confirmExit;

function confirmExit()
{
  if(checkChangesEnabled)
  {
    event.returnValue = "You have not saved your document yet.";
    disableCheck();
  }
}

function disableCheck()
{
  checkChangesEnabled = false;
  setTimeout("enableCheck()", "100");
}

function enableCheck()
{
   checkChangesEnabled = true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当按钮事件中 window.location 更改时,IE9 onbeforeunload 被调用两次...最小再现 的相关文章

随机推荐

  • 如何向网页添加自定义右键菜单?

    我想向我的 Web 应用程序添加自定义右键菜单 可以在不使用任何预构建库的情况下完成此操作吗 如果是这样 如何显示一个不使用第 3 方 JavaScript 库的简单自定义右键菜单 我的目标是像 Google Docs 那样 它允许用户右键
  • 提示用户从 Dropbox 下载时保存

    我想要一个从 Dropbox 下载文件的链接 该链接会提示用户而不是在浏览器中显示该文件 这可能需要将内容处置标头设置为 附件 我目前正在使用 Dropbox 媒体 URL 如下所述 https www dropbox com develo
  • C2039:类不是命名空间的成员

    法师 接口 Context h pragma once include
  • onResume 手机屏幕锁定时被反复呼叫

    看来 如果手机屏幕锁定时某个 Activity 位于前台 广播事件和 或唤醒锁将导致该 Activity 的 onResume 被调用 无论它们是否适用于您的应用程序 即使您不以任何方式与手机交互 也会发生这种情况 不解锁它 不触摸它 不做
  • Android 上的 SQLite 数据库有大小限制吗? [复制]

    这个问题在这里已经有答案了 我想将 db 文件内部存储在设备 SD 卡中 并希望从中访问数据 有人可以告诉我们在我们的 Android 应用程序中可以检索的 db 文件的最大大小吗 没有任何内存异常 SQLite 的最大大小为 10MB 到
  • 类型类与代数数据类型?

    我经常开始考虑要定义的类型类方面的问题 并意识到当我开始编码时我不需要类型类 并且可以使用代数数据类型来解决我的问题 这看起来更简单 因此 我想知道什么时候需要类型类 据我了解 类型类是表示某些类型存在某些函数的一种方式 例如 当类型 My
  • 迭代 openpyxl 中的只读工作簿中的列

    我有一个有点大的 xlsx 文件 19 列 5185 行 我想打开文件 读取一列中的所有值 对这些值执行一些操作 然后在同一工作簿中创建一个新列并写出修改后的值 因此 我需要能够在同一个文件中读取和写入 我原来的代码是这样做的 def re
  • 带有 SSL 的 Android 应用程序

    我知道这个特定的主题被问过很多次 但不幸的是 就我而言 它们都不起作用 在过去的几天里 我试图让它恢复正常状态 但每次都失败 所以我终于来这里询问 我的服务器上有一个带有自签名证书的网络服务 如果我在浏览器中输入地址 我就可以访问 wsdl
  • 使用 MongoDB 进行单元测试

    我选择的数据库是 MongoDB 我正在编写一个数据层 API 来从客户端应用程序中抽象实现细节 也就是说 我本质上提供了一个公共接口 充当 IDL 的对象 我正在以 TDD 方式测试我的逻辑 在每次单元测试之前 Before调用方法来创建
  • Grep 最后一场比赛的前后行

    我正在搜索一些日志 我想 grep 最后一个匹配项及其上方和下方的几行 grep A10 B10 searchString my log将打印前后 10 行的所有匹配项grep searchString my log tail n 1将打印
  • 以编程方式从 Kendo Grid 中选择一行

    我有一个网格 其中一列是一个模板 其中有一个复选框 Name grid Columns columns gt columns Bound c gt c Id ClientTemplate
  • PhoneGap - Android - 如何将相机捕获的图像保存在SD卡中

    我是 PhoneGap Android 开发人员的新手 我正在使用phonegap 在android 中制作一个应用程序 我想从设备相机拍照 然后在从设备拍摄图像后将其显示在屏幕上 并将捕获的图像存储在 SD 卡中 你能告诉我该怎么做吗 古
  • 二进制轮无法使用twine上传到pypi上

    我正在尝试从 github actions 上传适用于 linux 和 windows 的 Pypi 包 使用linux我得到这个结果 Binary wheel xxx cp36 cp36m linux x86 64 whl has an
  • 如何使用 Rails 在浏览器中查看电子邮件视图

    我正在为我的 Rails 应用程序处理电子邮件 目前我知道查看电子邮件的唯一方法是将其发送给自己 如何让 views 文件夹下的 notifications 文件夹中的 daily summary html haml 在浏览器中呈现 我想我
  • SQL Server:查询循环

    我需要获取所有应用程序数据库 并且我已经能够通过 select name from sys database where database id gt 6 现在 我需要运行以下查询 select User FirstName User Na
  • MVC 4 中的自定义成员资格提供程序

    我刚开始学习MVC4 作为第一步 我需要执行登录 因为自定义数据库在数据库中只有三个角色 真的有必要实施自定义会员资格提供商吗 我对此提出疑问 因为我正在阅读这篇文章 而他正在采取另一种方式 http patrickdesjardins c
  • 默认参数中的 C++ new 运算符及其副作用

    我有一个关于 C 中默认参数的问题 如果我有这样的功能 int foo int obj new Int 4 Stuff with obj 当然 现在整数仅用作示例 但问题是我是否要为参数提供一个值 如下所示 int x 2 foo x 将表
  • git 的源代码树修复 作为限电的一部分,密码身份验证被暂时禁用。请改用个人访问令牌[重复]

    这个问题在这里已经有答案了 仅供参考 这是专门针对 sourcetree 的 我在拉入 sourcetree 时遇到此错误 昨天工作得很好 但突然出现此错误 git c diff mnemonicprefix false c core qu
  • iPhone 崩溃后要求用户发送崩溃日志

    某些应用程序在崩溃后重新启动时询问用户是否要通过电子邮件发送崩溃日志 他们是怎么做到的 他们必须在崩溃时记录日志并读取该文件并要求用户发送它 如果它不为空 是否有一个框架或开源项目可以集成来做到这一点 看看批判主义 www critterc
  • 当按钮事件中 window.location 更改时,IE9 onbeforeunload 被调用两次...最小再现

    我一直在锤击这个问题 但一无所获 我有一个取消按钮 执行 window location 404 htm 当点击时 onbeforeunload 处理程序会触发两次 但前提是用户在第一个对话框中单击 留在此页面 正常的导航 页面刷新 转到主