4

我正在开发一个 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() 方法正在被破坏。是否有人对此有更多信息或可能有解决方法?

4

1 回答 1

0

也许您可能会更幸运地替换整个 Console 对象?这对我有用:

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

FWIW,在 WebCore IDL 源代码中, 的console属性DOMWindow标记为 Replaceable,而控制台对象的属性不是

于 2009-02-15T20:10:05.290 回答