JS失败,除非控制台打开
JS fails unless the console is open
我真的被这个问题难住了
我有一些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(); }
对于每个type
,if_checked
都是false,我可以在它运行时验证这一点。
然而,什么也没发生
没有单击任何按钮
这是浏览器中的纯单线程JS
页面上没有间隔/超时功能。
我可以在最后一行之前完成任意耗时的任务(我的最佳想法是,不知何故,这是一个并发问题,我看不出日志记录会对任何事情产生什么影响),而且它没有任何影响。
我可以运行相同的选择器并将其放入字符串中,或者除了日志记录或警报之外,对它做任何你能想到的事情,但它不会工作;没有按钮被点击。只有积极观察发生的事情,代码才能工作。整个交易相当复杂,我无法提供全部内容。
关于如何:
- 日志记录是否可能影响简单点击事件的结果
- 为什么这是Firefox特有的?或者我可能会尝试其他方法,在没有控制台或警报的情况下看看出了什么问题
编辑:哦,我已经让另外两个人在他们的浏览器中复制了这个问题(同样,只有Firefox),所以除非我们都分享它,否则这不是一些不稳定的扩展问题。
谢谢。
此行无效:
var t = "$('.'+type).not('[class*="unavailable"]')";
可能应该是:
var t = "$('.'+type).not('[class*='"unavailable'"]')";
或:
var t = $('.'+type).not('[class*="unavailable"]');
这里有一些猜测:
if_checked = !!$(":radio[name="+type+"]:checked").length;
看起来引号没有正确配对。你是这个意思吗?
if_checked = !!$(":radio[name='"+type+"']:checked").length;
(请参阅包裹type
值的单引号?)
我以前遇到过这种情况。如果在生产代码中保留任何日志记录,我会将其封装在try>catch语句中。
try {
console.log("my log message")
} catch (err) { };
我知道有一个空的"catch"被认为是不好的做法,但嘿,把登录留在生产代码上也是不好的。
在FF中(也在旧的IE中),如果控制台没有打开,那么它就不存在,因此捕获的错误可能类似于"控制台未定义"
- 控制台返回var不是't定义,但它是
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JsFiddle在分叉后描述失败
- 如何使用Protractor从Chrome控制台获取所有日志
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 为什么我能够从javascript控制台发送跨域ajax请求
- 当一些承诺失败时,如何继续使用$q.all()
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在Jquery中单击传播失败
- 当浏览器控制台未打开时,为什么要求会导致Internet Explorer 9超时
- 如何阻止 jQuery.ajax() 将失败记录到控制台
- JS失败,除非控制台打开
- 来自跨域的图像在HTML中显示良好,但ajax从浏览器控制台调用相同的图像失败
- 放肆的控制台运行程序无声失败
- 传单.addlayer()在功能上失败,在控制台工作
- 在AngularJS SPA中Google Chrome控制台的奇怪请求失败
- 当Mocha Test失败时,它将一个对象记录到控制台
- 如何使用QUnitJS将断言失败消息发送到控制台
- 当我尝试使用ajax时,chrome的控制台显示“资源加载失败”