すごく便利なconsoleオブジェクトですが、ブラウザによってサポートされているメソッドが なかったり、そもそもconsoleオブジェクトが使えなかったりと、たまに不便だったりします。
そんなときによく使う便利なコード。
[code language="javascript"] var logger = {}; var isDebug = true; var loggerInit = function(){ var emptyFunc = function(){}; var Err = "undefined"; var e = "assert,cd,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,log,markTimeline,memory,memoryProfile,profile,profileEnd,table,time,timeEnd,timeStamp,timeline,timelineEnd,trace,warn".split(","); if (typeof console !== Err && isDebug ){ logger = console; for(var i = 0; i < e.length; i++) { var method = e[i]; if (typeof logger[method] === Err) { if (typeof logger.log === Err){ logger[method] = emptyFunc; } else{ logger[method] = logger.log; } } }
} else{
for(var i = 0; i < e.length; i++) {
logger[e[i]] = emptyFunc;
}
}
}; loggerInit(); [/code]
使い方はconsoleと同じようにlogger.log,logger.groupみたいな形で使えます。
なにをやってるかっていうのと(簡単な処理ですが)、consoleオブジェクトがない場合に空のfunctionに置き換えて consoleオブジェクトが存在する場合でも特定のメソッドがない場合に空のfunctionに置き換えてます。
ちなみに「isDebug」をfalseにすると、すべて空functionになるので、console自体が動きません。