IE是否有控制台记录器?我正在尝试将一堆测试/断言记录到控制台,但我不能在IE中执行此操作。
答案 0 :(得分:144)
您可以通过启动“开发人员工具”(F12)来访问IE8脚本控制台。单击“脚本”选项卡,然后单击右侧的“控制台”。
在JavaScript代码中,您可以执行以下任何操作:
<script type="text/javascript">
console.log('some msg');
console.info('information');
console.warn('some warning');
console.error('some error');
console.assert(false, 'YOU FAIL');
</script>
此外,您可以通过调用console.clear()
清除控制台。
注意:看来您必须首先启动开发者工具,然后刷新页面才能使用。
答案 1 :(得分:24)
从版本8开始,Internet Explorer就像其他浏览器一样拥有自己的控制台。但是,如果未启用控制台,则console
对象不存在,并且对console.log
的调用将引发错误。
另一种选择是使用log4javascript(完全披露:由我编写),它有自己的日志控制台,适用于所有主流浏览器,包括IE&gt; = 5,以及浏览器自己的控制台的包装器这避免了未定义console
的问题。
答案 2 :(得分:12)
如果您最终将console.log()
命令发布到生产中,则需要对IE进行某种修复 - 因为console
仅在F12
调试模式下定义。
if (typeof console == "undefined") {
this.console = { log: function (msg) { alert(msg); } };
}
[显然删除警报(msg);声明一旦你确认它有效]
有关其他解决方案和更多详细信息,请参阅'console' is undefined error for Internet Explorer
答案 3 :(得分:9)
有Firebug Lite在IE中提供了很多Firebug功能。
答案 4 :(得分:5)
简单的IE7及以下垫片,为其他浏览器保留行号:
/* console shim*/
(function () {
var f = function () {};
if (!window.console) {
window.console = {
log:f, info:f, warn:f, debug:f, error:f
};
}
}());
答案 5 :(得分:3)
在他的书“Javascript Ninja的秘密”中,John Resig(jQuery的创建者)有一个非常简单的代码,可以处理跨浏览器的console.log问题。他解释说,他希望有一条适用于所有浏览器的日志消息,以下是他编码的方式:
function log() {
try {
console.log.apply(console, arguments);
} catch(e) {
try {
opera.postError.apply(opera, arguments);
}
catch(e) {
alert(Array.prototype.join.call( arguments, " "));
}
}
答案 6 :(得分:2)
对于仅限于console.log(无调试,跟踪,...)的IE8或控制台支持,您可以执行以下操作:
如果控制台或console.log未定义:为其创建虚拟函数 控制台功能(跟踪,调试,日志,......)
window.console = {
debug : function() {}, ...};
否则,如果定义了console.log(IE8)并且未定义console.debug(任何其他):将所有日志记录功能重定向到console.log,这样可以保留这些日志!
window.console = {
debug : window.console.log, ...};
不确定各种IE版本中的断言支持,但欢迎任何建议。
答案 7 :(得分:0)
您可以使用跨浏览器包装器:https://github.com/MichaelZelensky/log.js
答案 8 :(得分:0)
对于IE的旧版本(在IE8之前),在花费数小时研究并尝试许多不同的解决方案后,在IE Developer Toolbar中看到控制台日志并不是直接的,最后,以下工具栏对我来说是很好的工具: / p>
这样做的主要优点是为IE6或IE7提供了一个控制台,因此你可以看到错误是什么(在控制台日志中)
答案 9 :(得分:0)
我一直在做这样的事情:
var log = (function () {
try {
return console.log;
}
catch (e) {
return function () {};
}
}());
从那时起,总是使用log(...),不要太喜欢使用console。[warn | error |等],只需保持简单即可。我通常更喜欢简单的解决方案,而不是花哨的外部库,它通常会有所回报。
避免IE问题的简单方法(不存在console.log)