检查控制台是否存在

时间:2011-05-17 19:59:01

标签: javascript jquery asp.net

我正在写一个插件。为此我会记录一些事情,说警告,necc事情等。要记录它们我将使用控制台,但如果某些浏览器不支持控制台,则可能会出错。要处理此错误,我正在考虑使用此代码:

    if (typeof console == 'undefined') console = {};
if (typeof console.log == 'undefined') console.log = function() {};
if (typeof console.debug == 'undefined') console.debug = function() {};
if (typeof console.info == 'undefined') console.info = function() {};
if (typeof console.warn == 'undefined') console.warn = function() {};
if (typeof console.error == 'undefined') console.error = function() {};

这是否正常或有更好的选择吗?

5 个答案:

答案 0 :(得分:34)

你正在接近它。但是你可以稍微缩短它:

if(typeof console === "undefined") {
    console = {
        log: function() { },
        debug: function() { },
        ...
    };
}

这允许您在不首先检查是否定义了控制台对象的情况下使用console.log/console.debug etc。如果您正在记录,我建议您始终包含此代码段,因为很容易忘记删除,如果没有控制台,它会破坏您的网站。

答案 1 :(得分:9)

这种方法使得将来更容易添加/更改/删除方法,并且比大多数方法更优雅,更少冗余:

if (!"console" in window || typeof console == "undefined") {
    var methods = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    var emptyFn = function () {};
    window.console = {};
    for (var i = 0; i < methods.length; ++i) {
        window.console[methods[i]] = emptyFn;
    }
}

答案 2 :(得分:2)

console && console.log("whatever");

这不起作用吗?

答案 3 :(得分:2)

如何使用库进行日志记录?

更新:您可以使用以下脚本来避免缺少控制台的浏览器出现console错误。

https://github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js

答案 4 :(得分:0)

如何缩短@alexn的答案

window.console = window.console || { debug: function(){}, log: function() { } };