我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 出现一秒钟,然后立即解除):错误:在我的开发环境中不会发生;在 Firefox 中不会发生在具有相同表单的其他页面中不会发生,使用 data-remote="true" 提交,并在提交按钮上进行数据确认。在使用 Chrome 的其他 4 种不同的 macbook 中也不会发生!确实发生在我的生产环境中,在我的机器上,甚至在私人标签上;这太令人费解了,因为它只发生在我的机器上,但即使在私人选项卡上,也不能是扩展程序,但我根本无法在任何其他机器、浏览器甚至我自己的机器上重现此错误开发环境这太奇怪了,即使以 开始 rails RAILS_ENV=production,这样我就可以像在生产中一样获得所有资产,错误也不会发生。使用 Chrome devtools(源选项卡)将调试器附加到 mouse.click 会使错误消失(只要我单击按钮,调试器就会触发,我恢复代码,并且确认窗口只出现一次)。我不知道如何调试这种奇怪的行为。可以放手,但我担心它稍后会回来咬我,所以我需要了解为什么我的机器上会发生这种情况。jquery-ujs lib ( https://github.com/rails/jquery-ujs/issues/384 ) 中存在一个旧错误,但它在几年前已修复,我使用的是最新版本的 lib ( https: //github.com/rails/jquery-ujs/commit/9e805c90c8cfc57b39967052e1e9013ccb318cf8),它甚至有一个安全机制,如果它被包含不止一次就会出错,并且控制台中没有错误(我确定只包含lib一次)。不使用涡轮链接。
2 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
1) 刷新页面
2) 在开发者控制台 (F12) 中运行:window.confirm = function() { debugger; }
3) 单击提交按钮并从那里进行调试。
检查调用堆栈可能会让您对正在发生的事情有一些了解。
至尊宝的传说
TA贡献1789条经验 获得超10个赞
我终于找到了罪魁祸首:Facebook 像素代码 JS。
就像我说的,这很难调试。您附加到 window.confirm() 的任何调试器都会使错误消失(window.confirm 然后只出现一次,正如预期的那样)。此外,我无法在开发中重现它,即使使用RAILS_ENV=production
.
那我是怎么发现的呢?我在开发工具中注意到,每次单击蓝色提交按钮时,都会向 fbevents.js 发起的 facebook 服务器发出请求。那是facebook像素代码。
刚刚尝试了一个没有该脚本的部署,......最后,问题结束了。
该死的 fbevents.js
添加回答
举报
0/150
提交
取消