找出是否有控制台可用
我在想,如何找到与javascript如果控制台对象可用?找出是否有控制台可用
我有问题,如果我忘记删除调试输出像console.log('sthg')
我在几个浏览器中得到错误,如果没有萤火虫或类似的活动。
感谢您的帮助
旁边问题我感兴趣的有关控制台对象的所有信息。有任何人的一些文件链接,或者如此?这是一个标准吗?等等...
检查属性存在为window
成员:
if (window.console) {
}
旁边问题我感兴趣的有关控制台对象的所有信息。有任何人的一些文件链接,或者如此?这是一个标准吗?等等......
查看Firebug documentation for the Console API; Chrome和Safari实施了大多数(但不是全部)列在那里的方法。有没有标准定义控制台应该是什么,所以你需要测试每个浏览器,看看它是否支持该功能。
也许......
if (console) {
// do stuff
}
这会在未定义`console`的浏览器中引发错误。 – 2011-02-09 14:40:50
是的......已经试过这个:-) – helle 2011-02-09 15:14:40
通过firebug定义,IE8(需要与F12打开开发人员工具),铬等,但有没有为它定义的规范。有一个console.log wrapper,使它非常容易使用,跨浏览器日志解决方案,所以如果控制台不存在,您的代码不会爆炸。
输出到控制台的一个不错的简单和短期的方式安全地如下:
window.console && console.log('Debug message');
我总是包括这在我的HTML头的顶部之前,我加载任何东西。使用console.debug进行调试对我来说太长了。我喜欢切换这些控制台功能的用法。
不知道代码是如何优化的,但它总能完成这项工作。
(function() {
var consoleDisabled = false;
if (consoleDisabled) {
window.console = undefined;
}
if (window.console == undefined) {
window.console = {
debug: function() {
return true;
},
info: function() {
return false;
},
warn: function() {
return false;
},
log: function() {
return false;
}
}
}
debug = (function(args) {
window.console.debug(args);
});
info = (function(args) {
window.console.info(args);
});
warn = (function(args) {
window.console.warn(args);
});
log = (function(args) {
window.console.log(args);
});
})();
debug(somevar);
info(somevar);
warn(somevar);
log(somevar);
try{
console.log("test")
}
catch(e){
console={},
console.log=function(a){}
}
只是把它放在你的JS文件的顶部,然后使用的console.log();没有任何担心浏览器错误,我也有这个错误在IE9
这里是我使用的。请记住,我只是半心半意地支持不支持控制台的浏览器。我只用不完的console.log(),但你可以看到它是如何进行扩展以支持console.dir(),console.info()等
var console = console || {
"log": function(stuff) {}
};
我喜欢它,因为调用它不导致错误,但它返回[undefined],我认为这是适当的。
注意,前(后)很多很多的人我们已经写了类似的polyfills:
简单的方法是:
if (window.console){
console.log('do something');
}
,而不是仅仅写:
console.log('do something');
什么是chromes和IEs控制台? :-) – helle 2011-02-09 15:15:47
@helle:正如我所说的,Chrome实现了大部分的Firebug Console API方法。 IE实现了一些基本的,比如`warn`,`error`,`info`等,但是它并没有实现它们,并且似乎没有文档列表,所以你必须尝试一下你自己。 – 2011-02-09 15:23:35
@AndyE你能解释为什么检查该属性存在于窗口不如使用typeof强壮吗?为什么我们不应该直接检查windows.console变量,或者甚至只是在其他答案中调用全局控制台? – matpop 2015-08-13 14:08:09