Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查看控制台是否可用_Javascript_Debugging - Fatal编程技术网

Javascript 查看控制台是否可用

Javascript 查看控制台是否可用,javascript,debugging,Javascript,Debugging,我想知道,如何使用javascript确定控制台对象是否可用 我的问题是,如果我忘记删除调试输出,比如console.log('sthg'),如果没有firebug或类似的活动浏览器,我会在多个浏览器中出错 谢谢你的帮助 除了这个问题之外,我对控制台对象的所有信息都感兴趣。有人有文档链接吗?这是标准吗?等等…检查属性是否作为窗口的成员存在: if (window.console) { } 除了这个问题之外,我对控制台对象的所有信息都感兴趣。有人有文档链接吗?这是标准吗?等等 看看这个网站;Ch

我想知道,如何使用javascript确定控制台对象是否可用

我的问题是,如果我忘记删除调试输出,比如
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');