Javascript 查看控制台是否可用
我想知道,如何使用javascript确定控制台对象是否可用 我的问题是,如果我忘记删除调试输出,比如Javascript 查看控制台是否可用,javascript,debugging,Javascript,Debugging,我想知道,如何使用javascript确定控制台对象是否可用 我的问题是,如果我忘记删除调试输出,比如console.log('sthg'),如果没有firebug或类似的活动浏览器,我会在多个浏览器中出错 谢谢你的帮助 除了这个问题之外,我对控制台对象的所有信息都感兴趣。有人有文档链接吗?这是标准吗?等等…检查属性是否作为窗口的成员存在: if (window.console) { } 除了这个问题之外,我对控制台对象的所有信息都感兴趣。有人有文档链接吗?这是标准吗?等等 看看这个网站;Ch
console.log('sthg')
,如果没有firebug或类似的活动浏览器,我会在多个浏览器中出错
谢谢你的帮助
除了这个问题之外,我对控制台对象的所有信息都感兴趣。有人有文档链接吗?这是标准吗?等等…检查属性是否作为
窗口的成员存在:
if (window.console) {
}
除了这个问题之外,我对控制台对象的所有信息都感兴趣。有人有文档链接吗?这是标准吗?等等
看看这个网站;Chrome和Safari实现了其中列出的大部分(但不是全部)方法。没有标准定义控制台中应该包含的内容,因此您需要测试每个浏览器,看看它是否支持该功能。也许
if (console) {
// do stuff
}
由、IE8(需要使用F12打开开发工具)、Chrome等定义,但没有为其定义规范。有一种非常易于使用的跨浏览器日志记录解决方案,因此,如果控制台不存在,您的代码不会爆炸。安全地输出到控制台的简单快捷方法如下:
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);
只需将其放在JS文件的顶部,然后使用console.log();不用担心浏览器错误,我在IE9中也出现了这个错误。请记住,我只是半心半意地支持浏览器,不支持控制台。我只使用过console.log(),但您可以看到它如何扩展以支持console.dir()、console.info()等
我喜欢它,因为调用它不会导致错误,但它会返回[undefined],我认为这是合适的
请注意,我们之前(和之后)的许多人都写过类似的PolyFill:
最简单的方法是:
if (window.console){
console.log('do something');
}
而不仅仅是写:
console.log('do something');
这将在未定义控制台的浏览器中引发错误。这是我想要推荐的,但想不起名称!很高兴知道有人找到了它。那chromes和IEs控制台呢?:-)@helle是的,我想IE8现在确实添加了一个控制台,而不是Chrome。谢谢。那chromes和IEs控制台呢?:-)@正如我所说,Chrome实现了大多数Firebug控制台API方法。IE实现了一些基本功能,如警告
,错误
,信息
,等等,但它并没有实现所有功能,而且似乎没有一个文档化的列表,所以您必须亲自尝试。@您能解释一下为什么检查窗口中的属性不如使用typeof强大吗?为什么我们不应该直接检查windows.console变量,或者像其他答案一样只检查console global?@matpop:在window.console之前编写的脚本可能会意外地使用名为console
的全局变量覆盖该变量。这几天不太可能发生,所以我编辑了我的帖子来简化答案。有趣的解决方案。我通常不喜欢使用异常来处理流,但这可能非常方便。+1,因为我认为这是一个好主意。Andy E的回答完全符合要求,因此他仍然有正确的答案。同意。这与其说是直接的回答,不如说是旁白。我很高兴您喜欢它。值得一提的是,它是有效的,因为var指令实际上是在代码执行之前处理的。我认为这不是很好,因为可能有人覆盖了控制台,并且.log不存在。您还应该检查.log是否存在,是否确实是一个函数。
if (window.console){
console.log('do something');
}
console.log('do something');