Safari / Chrome中的全局控制台对象被重置

时间:2009-02-11 18:25:11

标签: javascript debugging safari google-chrome webkit

我正在研究一个jQuery插件,我正在尝试制作一个统一的跨浏览器控制台对象进行调试。该插件将使用Firebug或FirebugLite,但也允许用户选择浏览器的本机控制台对象(如果可用)。对于Safari / Chrome,控制台方法只接受1个参数,而Firebug控制台API(我正在尝试复制)接受任意数量的参数,这些参数作为连接字符串打印。我正在使用以下代码来覆盖本机控制台日志方法:

window.console._log = window.console.log;
window.console.log = function(){
    window.console._log($.makeArray(arguments).join(", "));
};

我有一个测试页面会在点击时触发console.log(“str1”,“str2”)命令。前几次,日志消息按预期工作,但经过一段时间(通常只有几秒钟),日志消息开始只打印第一个参数。这就好像控制台对象正在恢复到其原始的本机状态,并且我的被覆盖的log()方法正在被销毁。有没有人有关于此的更多信息或可能有解决方法?

1 个答案:

答案 0 :(得分:1)

也许您可能有更多的运气替换整个Console对象?这对我有用:

window._console = window.console;
window.console = {
    log: function() {
        window._console.log($.makeArray(arguments).join(", "));
    }
};

FWIW,在WebCore IDL源中,console的{​​{1}}属性为marked as Replaceable,而the properties of the console object are not