IE8 和控制台.log - 如果开发人员控制台未打开,则回退到存根

IE8 and console.log - Fallback to stub if developer console isn't open

本文关键字:控制台 回退 存根 log 如果 开发 IE8      更新时间:2023-09-26

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

//  Protect against IE8 not having developer console open.
var console = window.console || {
    "log": function () {
    },
    "error": function () {
    },
    "trace": function () {
    }
};

我对这个解决方案不满意,因为在针对IE8进行调试时,我的控制台日志被完全删除,因为开发人员窗口最初没有打开。我需要在开发人员窗口打开的情况下完全重新加载我的页面,以便我的控制台日志不会被存根。

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

有没有人有这样的事情的解决方案?这样做的解决方案是否需要使用新变量进行日志记录?例如:

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];
    }
}

引用

  • 窗口错误

  • 错误 | 错误事件

  • 使用 Error.stack 更快地诊断 JavaScript 错误