5

我正在开发一个包含一些复杂 javascript 的新项目。我不能发布任何代码,所以这不是我的问题。

我有一个适用于Firefox 3.0. 有人指出该脚本在 中不起作用Firefox 3.5,因此我正在尝试使其起作用。确实该脚本没有产生预期的结果,所以我安装了最新版本的Firebug,启用console并刷新了页面。

哇,它奏效了。

没有错误,没有警告。

所以我禁用了控制台,然后它不再工作了......

这里发生了什么?Firebug 控制台以某种方式更改了 Firefox 中的某些内容,使我的脚本工作?对下一步有什么建议吗?(除了要求未来的访客安装 Firebug ......)

4

4 回答 4

10

会不会像忘记console.log()在 javascript 中对某个地方的调用进行注释一样简单?

如果你有挂起的引用,并且用户没有安装 Firebug,你会得到一个运行时错误,这将停止脚本的执行。

于 2009-09-11T19:46:47.047 回答
7

在我看来,您有可能遇到线程问题,FireBug 正在分析并可能减慢其中一个线程,以便在解决下一步之前有时间完成。

您是否可能正在使用 ajax,并且正在等待响应?或者您可能在加载依赖于 DOM 中其他内容的对象时或之后执行某些操作?

更新:对于那些现在偶然发现的人来说,JavaScript 中的“线程”实际上只存在于抽象中(网络工作者等)。我误用了这个词。我真的在想一个异步操作,它在另一个操作准备好之前返回。

于 2009-09-11T19:43:49.750 回答
6

检查您的代码中的 console.log()、console.debug()。如果控制台未定义(如预期的那样),调用 window.console 对象方法会引发错误。

在大多数情况下,您可以轻松删除或评论这些行。

于 2009-09-11T19:47:39.200 回答
0

我为 firebug 编写了一个简单的包装器(我只使用调试,但它应该为您提供复制其他方法所需的内容),它只在控制台存在时写入,因此我可以使用 firebug,不需要注释掉我的调试声明,它不会破坏没有它的人的网站。

如果您使用此代码,则使用 fbconsole.debug 而不是 console.debug 您将永远不会遇到此问题:

function fbconsole () {
    this.debug = function (val) {
        if(typeof(console) !== 'undefined' && console != null) {
            console.debug(val);
            }
        }
    }
var fbconsole = new fbconsole();
于 2010-01-22T20:24:15.323 回答