IE8中控制台未定义问题
Console undefined issue in IE8
我理解如果调试窗口打开,IE只将控制台作为对象。如果调试窗口未打开,则将console视为未定义。
这就是为什么我决定添加一个如果检查,像这样:
if(console)
console.log('removing child');
我的理解是,如果控制台是未定义的,它将跳过console.log。然而,在IE8的if(控制台)行通过,我得到一个未定义的异常,就像之前在console.log。这太奇怪了
有办法解决这个问题吗?如何在代码中编写控制台,使其在所有三种浏览器上都能运行?
您可以在if子句中添加以下内容:
if (console && console.log) {
console.log('removing child');
}
或者像这样为console.log函数编写一个日志包装器。
window.log = function () {
if (this.console && this.console.log) {
this.console.log(Array.prototype.slice.call(arguments));
}
}
像这样使用:
log("This method is bulletproof", window, arguments");
下面是一个示例:http://jsfiddle.net/joquery/4Ugvg/
可以将console.log
设置为空函数
if(typeof console === "undefined") {
console = {
log : function () {}
}
}
检查控制台是否存在
window.console && console.log('foo');
尝试使用这样的条件,因为如果不支持console,它将抛出undefined not false;
if(typeof console !== "undefined") {
console.log('removing child');
}
然而,为了避免必须包装所有的控制台日志语句,我将把这段代码片段放在代码中。这将阻止IE抛出任何错误
if(typeof console === "undefined") {
console = {
log: function() { },
debug: function() { },
...
};
}
您需要检查控制台的类型,以及console.log的类型。你可能想检查这个链接:
console.log在IE8中发生了什么?
查看更多信息:http://patik.com/blog/complete-cross-browser-console-log/
相关文章:
- 如何消除代码中的未定义和其他问题
- 组件生命周期问题/无法处理未定义的问题
- JavaScript/jQuery JSON数组问题-值为未定义
- 使用Breeze脱机数据时出现未定义的问题不是函数
- 如何使用警报进行调试来解决(未定义的)时间问题
- SJCL的问题“;无法读取属性'替换'“未定义”;
- JSON JavaScript 未定义的变量问题
- 创建可在任何地方使用的 JS 函数?范围和功能“未定义”的问题
- 将 AJAX 传递给 PHP 时遇到问题,而是未定义
- 尝试添加到根父节点时出现 KendoUI 未定义节点问题
- 榆树早午餐编译问题:“拆分”未定义
- JavaScript,jquery中未定义的VAR的问题.如何
- D3 JS - 未捕获的类型错误:无法读取未定义的属性“长度” - 似乎与数据问题有关
- 范围问题/“未定义不是一个函数”
- jQuery实时问题-未定义不是函数
- Grunt动态变量问题(未定义)
- Google Chart IE9问题(未定义)
- Angular.js中的input[radio]问题未定义且未检查
- 可融合的自定义信息窗口;绑定问题-未定义的属性
- 猫鼬问题:未定义架构