gpt4 book ai didi

javascript - 如何调试导致 window.confirm 反复闪烁的原因? (Jquery-ujs)

转载 作者:行者123 更新时间:2023-12-01 00:47:17 24 4
gpt4 key购买 nike

我将 jquery-ujs 与 Rails 一起使用,这允许我们在表单提交之前使用 data-confirm="Confirm Submit?" 请求确认。

我在特定页面上遇到了一个非常奇怪的错误,一旦我单击提交按钮,window.confirm 就会快速闪烁,就像附加了多个事件处理程序一样。

这是 HTML 代码:

<button name="button" type="submit" data-confirm="Do you confirm?" data-disable-with="Wait..." class="btn btn-primary">
Submit
</button>

这就是单击按钮时发生的情况(注意 window.confirm 出现一瞬间,然后立即消失):

bug

错误:

  • 在我的开发环境中不会发生;
  • 在 Firefox 中不会发生
  • 在具有相同表单、使用 data-remote="true"提交且提交按钮上有 data-confirm 的其他页面中不会发生这种情况。
  • 在其他 4 台使用 Chrome 的不同 MacBook 上也不会出现这种情况!
  • 确实发生在我的生产环境中、我的机器上,甚至在私有(private)选项卡上;

这太令人费解了,因为它只发生在我的机器上,但即使在私有(private)选项卡上,它也不能是扩展,但我根本无法在任何其他机器、浏览器甚至我自己的机器上重现此错误开发环境中的机器。

这太奇怪了,即使使用 RAILS_ENV=product 启动 Rails,以便我获得所有 Assets ,就像它们在生产中一样,错误也不会发生。

使用 Chrome 开发工具(源选项卡)将调试器附加到 mouse.click 可以使错误消失(单击按钮后调试器就会触发,我恢复代码,并且确认窗口仅出现一次)。

我不知道如何调试这种奇怪的行为。可以让它过去,但我担心它稍后会回来咬我,所以我需要了解为什么我的机器上会发生这种情况。

jquery-ujs 库 ( https://github.com/rails/jquery-ujs/issues/384 ) 中有一个旧错误,但它在几年前就被修复了,我使用的是最新版本的库 ( https://github.com/rails/jquery-ujs/commit/9e805c90c8cfc57b39967052e1e9013ccb318cf8 ),它甚至有一个安全机制来出错如果它被包含多次,并且控制台中没有错误(我确信该库只被包含一次),则输出。

不使用涡轮链接。

更新1

我添加了上面错误的 gif。

此外,我手动导入了 jquery-ujs (从 https://github.com/rails/jquery-ujs/commit/9e805c90c8cfc57b39967052e1e9013ccb318cf8 复制并粘贴)并编辑了 confirm 方法:

confirm: function(message) {
console.trace();
return confirm(message);
},

在开发工具中,我确认即使在生产中,当错误发生时,跟踪也只出现一次,这是堆栈跟踪:

enter image description here

最佳答案

1) 刷新页面
2) 在开发者控制台 (F12) 中运行此命令: window.confirm = function() { debugger; }
3) 单击提交按钮并从那里进行调试。

检查调用堆栈可能会让您了解正在发生的情况。

关于javascript - 如何调试导致 window.confirm 反复闪烁的原因? (Jquery-ujs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com