我正在开发一个有一些复杂javascript的新项目。我不能发布任何代码,所以这不是我的问题。
我有一个适用于Firefox 3.0
的脚本。有人指出该脚本在Firefox 3.5
中不起作用,所以我试图让它起作用。实际上,脚本没有产生预期的结果,因此我安装了最新版本的Firebug
,启用了console
并刷新了页面。
哇,它有效。
没有错误,没有任何警告。
所以我禁用了控制台,然后它不再起作用了......
这里发生了什么? Firebug控制台以某种方式在Firefox中改变了一些使我的脚本工作的东西?有关下一步的建议吗?(除了要求未来的访问者安装Firebug ......)
答案 0 :(得分:10)
是否可以像忘记在javascript中某处对console.log()
的来电评论一样简单?
如果您有挂起引用,并且用户没有安装Firebug,您将收到一个运行时错误,该错误将暂停脚本的执行。
答案 1 :(得分:7)
听起来我觉得你有机会遇到线程问题,FireBug正在分析并可能减慢其中一个线程,以便在下一步解决之前有时间完成。
您是否正在使用ajax,还有什么东西在等待这个回复?或者你可能在加载一个依赖于DOM中其他东西的对象时或之后做某事?
更新: 对于那些现在陷入困境的人来说,JavaScript中的“线程”实际上只存在于抽象(web worker等)中。我误用了这个词。我真的在考虑在另一个准备就绪之前返回的异步操作。
答案 2 :(得分:6)
检入代码中的console.log(),console.debug()。如果未定义控制台(如预期的那样),调用window.console对象方法会抛出错误。
在大多数情况下,您可以轻松删除或评论该行。
答案 3 :(得分:0)
我为firebug写了一个简单的包装器(我只是使用debug但它应该给你复制其他方法所需要的东西),只有当控制台在那里时才写,所以我可以使用firebug,不需要去评论我的调试语句不会破坏没有它的人的网站。
如果您使用此代码,则使用fbconsole.debug而不是console.debug,您将永远不会遇到此问题:
function fbconsole () {
this.debug = function (val) {
if(typeof(console) !== 'undefined' && console != null) {
console.debug(val);
}
}
}
var fbconsole = new fbconsole();