javascript - 除非控制台打开,否则 JS 会失败

标签 javascript jquery firefox

我真的被这个问题难住了。
我有一些 JavaScript 来控制产品配置器。
一段简单的代码来选择一些默认值

  • 在 Chrome 中运行良好
  • 在 IE 中运行良好
  • 不适用于 Firefox(所有最新版本)

但是,如果我做任何事情来观察 FF 中的代码,它工作正常

  • 如果我让它提醒任何相关的事情,它就会起作用。
  • 如果我记录任何相关内容,它就会起作用,但前提是控制台实际上已打开,以便我可以看到日志。如果控制台未打开,则不起作用。

     for(type in radio_groups) {
         if_checked = !!$(":radio[name="+type+"]:checked").length;
    
         console.log($('.'+type).not('[class*="unavailable"]')); 
         //This loop doesnt do anything without this log above
    
         alert($('.'+type).not('[class*="unavailable"]')); 
         // Or this alert.
    
         var t = $('.'+type).not('[class*="unavailable"]'); 
         // Line above doesn't make stuff work.
    
         if(!if_checked)
             $('.'+type).not('[class*="unavailable"]').first().click();
     }
    

if_checked 对于每个 type 都是 false,我可以在它运行时验证这一点。

但是,什么也没有发生。
没有点击任何按钮。
这是浏览器中的普通单线程 JS。
页面上没有间隔/超时功能。

我可以在最后一行之前执行任意耗时的任务(我最好的想法是这是一个并发问题,我不知道日志记录会如何影响任何事情)并且它没有任何效果。

我可以运行相同的选择器并将其放入字符串中,或​​者除了日志记录或警报之外对其进行任何您能想到的操作,但它不会起作用;没有按钮被点击。只有积极观察发生的事情才能使代码正常工作。整个交易相当复杂,我无法提供全部内容。

关于如何做的任何想法:

  • 日志记录可能会影响简单点击事件的结果?
  • 为什么这是 Firefox 特有的?或者我可以尝试其他方式在没有控制台或警报的情况下查看出了什么问题?

编辑:哦,我已经让另外两个人在他们的浏览器中复制了这个问题(同样,仅限 Firefox),所以这不是一个奇怪的扩展问题,除非我们都分享它。

谢谢。

最佳答案

此行无效:

var t = "$('.'+type).not('[class*="unavailable"]')";

可能应该是:

var t = "$('.'+type).not('[class*=\"不可用\"]')";

或者:

var t = $('.'+type).not('[class*="unavailable"]');

关于javascript - 除非控制台打开,否则 JS 会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20061569/

相关文章:

jquery - 使用 qTip2 进行边缘检测

jquery:修剪掉网址的最后一部分

javascript - 在插入键值数组之前检查值是否存在

javascript - 使用自定义元素时 Firefox 中的递归过多

css - 哪个版本的 Firefox 通过 moz-border-radius 支持边框元素的圆 Angular ?

javascript - 如何在 native react 中使选项卡在选项卡栏中垂直居中

javascript - 如何使用javascript将字符串中的电话号码和时间分开?

javascript - 修改feathers hook.result中的响应状态码

javascript - 在 HTML 中使用右键单击上下文菜单是否安全或可以接受?

html - Firefox 中的 Padding Left 怪癖