避免调用 console 相关方法在 IE6/7 等不支持的浏览器下报错

来自 HTML Boilerplate 前端框架的方法。

原理很简单:

  1. 判断 console 对象是否存在,不存在则新建:

    1
    var console = (window.console = window.console || {});
  2. 定义包含 console 对象方法名称的数组。迭代数组,判断 console 对象是否具有对应的方法,如果方法不存在,在 console 对象上新建此方法,并赋值空函数。

    1
    2
    3
    if (!console[method]) {
    console[method] = function() {};
    };

完整的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Avoid `console` errors in browsers that lack a console.
(function() {
var method;
// 空函数
var noop = function noop() {};
// 预测console方法列表
var methods = [
'assert', 'clear', 'count', 'debug',
'dir', 'dirxml', 'error', 'exception',
'group', 'groupCollapsed', 'groupEnd', 'info',
'log', 'markTimeline', 'profile', 'profileEnd',
'table', 'time', 'timeEnd', 'timeStamp',
'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// 如果console的此属性(方法)不存在,则将其设定为空函数
if (!console[method]) {
console[method] = noop;
}
}
}());
0%