Javascript IE8和console.log-如果开发者控制台不是';t打开

Javascript IE8和console.log-如果开发者控制台不是';t打开,javascript,internet-explorer-8,Javascript,Internet Explorer 8,我目前使用以下存根帮助防止console.log在Internet Explorer 8中抛出错误: // Protect against IE8 not having developer console open. var console = window.console || { "log": function () { }, "error": function () { }, "trace": function () { } }; 我对这

我目前使用以下存根帮助防止console.log在Internet Explorer 8中抛出错误:

//  Protect against IE8 not having developer console open.
var console = window.console || {
    "log": function () {
    },
    "error": function () {
    },
    "trace": function () {
    }
};
我对这个解决方案不满意,因为在针对IE8进行调试时,我的控制台日志被完全删除,因为开发人员窗口最初没有打开。我需要在开发者窗口打开的情况下完全重新加载我的页面,这样我的控制台日志就不会被删除

我希望提出一个更健壮的解决方案,在尝试登录时检查console.log的存在,而不是在第一次运行时。这将允许我在启动程序后打开IE8开发者控制台,仍然可以看到错误

有没有人能解决这样的问题?这需要使用新变量进行日志记录吗?e、 g:

var newConsole = window.console || {
    "log": function () {
        if( window.console ) window.console.log(arguments);
    },
    "error": function () {
        if( window.console ) window.console.error(arguments);
    },
    "trace": function () {
        if( window.console ) window.console.trace(arguments);
    }
};
我需要在开发者窗口打开的情况下完全重新加载我的页面,这样我的控制台日志就不会被删除

使用
window.onerror
而不是存根:

window.onerror = function(message, url, linenumber) {
  try
    {
    console.log([message, url, linenumber]);
    }
  catch(e)
    {
    location.hash = [message, url, linenumber];
    }
}
参考资料