检查控制台是否存在
我正在写一个插件。 为此我会记录一些事情,说警告,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() {};
这项工作是正确还是有更好的选择?
你接近它了。 但是你可以缩短一点:
if(typeof console === "undefined") { console = { log: function() { }, debug: function() { }, ... }; }
这允许您在不首先检查是否定义了控制台对象的情况下使用console.log/console.debug etc
。 我建议您在记录时始终包含此片段,因为很容易忘记删除,如果没有控制台,它将破坏您的网站。
这种方法使得将来更容易添加/更改/删除方法,并且比大多数方法更优雅,更少冗余:
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; } }
console && console.log("whatever");
这不起作用吗?
如何使用库进行日志记录?
- YUI控制台
- log4j的
- jsnlog
- 日志等级
更新:您可以使用以下脚本来避免缺少控制台的浏览器中的console
错误。
https://github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js
如何缩短@alexn的答案
window.console = window.console || { debug: function(){}, log: function() { } };