【问题标题】:Hide errors and warnings from console从控制台隐藏错误和警告
【发布时间】:2014-02-28 05:23:37
【问题描述】:

在 PHP 和其他语言中,有一些方法可以抑制错误/警告消息。

在 javascript 或 jquery 中有没有办法防止错误和警告被写入控制台日志?

【问题讨论】:

  • 是的,在控制台本身禁用这些消息(应该有一些过滤选项)。但是,为什么要隐藏错误?这听起来很狡猾......
  • console.clear(); 怎么样?
  • 我通过修复代码在我的站点/应用程序的控制台中隐藏了所有错误和警告。
  • 我不知道这是否是 Darren 的意图,但我遇到了需要检查资源是否可用的情况,如果没有,代码会在控制台上生成错误。我没有测试try { } catch(e) { } 看它是否抑制了控制台错误。我会测试一下。
  • console.clear();隐藏控制台错误是一个不错的选择,因为在运行站点的某些时候我们不想显示错误,所以我们将它们隐藏在 PHP 中。

标签: javascript jquery


【解决方案1】:

可以在一定程度上处理错误,但如果您未处理错误,则它会转到浏览器,您无法停止浏览器显示它。您可以编写代码以使错误最小化,并在可能的情况下使用try-catch 来处理异常。

try
{
    //statements suspected to throw exception.
}
catch(e)
{
}

【讨论】:

  • 必须有一种方法来创建中间件 (kindof) 功能,为您处理错误/异常。如果有人找到(已经找到)请回复。
【解决方案2】:

隐藏所有 Javascript 控制台警告的一种肮脏方法是覆盖控制台对象的 warn 方法:

console.warn = () => {};

显然,它也适用于其他控制台方法

【讨论】:

  • 这是我一直在寻找的,也适用于 node.js
【解决方案3】:

在对这个问题进行了一些研究和开发之后,我遇到了这个解决方案,它可以根据您的选择隐藏警告/错误/日志。

(function () {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function () {        
        console.warn = function () { };
        window['console']['warn'] = function () { }; // For confirmation again
        this.addEventListener('load', function () {                        
            console.warn('Something bad happened.');
            window['console']['warn'] = function () { };
        });        
    };
})();

在 JQuery 插件之前添加此代码(例如 /../jquery.min.js),即使这是不需要 JQuery 的 JavaScript 代码。因为一些警告在 JQuery 本身中。

【讨论】:

    【解决方案4】:

    这是基于浏览器的功能,您可以为浏览器安装任何插件,然后您可以隐藏错误/警告

    我去了about:config for Firefox 并将javascript.options.strict 设置为false,警告消失了。但我觉得这不是一个解决方案。

    howtocreate.co.uk/strictJSFirefox.html 
    

    【讨论】:

    • javascript.options.strict 不再存在。
    【解决方案5】:

    您只需在脚本中添加一些代码块即可运行。! 铬:

    console._commandLineAPI.clear();
    

    Safari:

    console._inspectorCommandLineAPI.clear();
    

    您可以创建自己的变量,它适用于以下两种情况:

    if (typeof console._commandLineAPI !== 'undefined') {
        console.API = console._commandLineAPI;
    } else if (typeof console._inspectorCommandLineAPI !== 'undefined') {
        console.API = console._inspectorCommandLineAPI;
    } else if (typeof console.clear !== 'undefined') {
        console.API = console;
    }
    

    之后,你可以简单地使用

    console.API.clear().
    

    【讨论】:

      【解决方案6】:

      对用户最好 控制台.clear(); 90% 的情况都会得到解决

      【讨论】:

      • 在大多数情况下,清除控制台无济于事——通常如果你想隐藏某些类型的控制台条目,那是因为你正在寻找另一种类型的控制台中的东西——可能是 console.log () 输出,并且控制台中充满了错误输出。
      【解决方案7】:

      我通常只执行包含特定 console.log 警告的函数并将其注释掉。

      【讨论】:

      • 在您自己的代码中,这显然是最简单的解决方案。但是,当我们谈论通常会出现此问题的 3rd 方库时,更改库代码将阻止您更新库。此外,如果您通过需求列表(这是当今的事实标准)与您的团队共享依赖项,它也不起作用。
      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      相关资源
      最近更新 更多