一尘不染

IE9是否支持console.log,它是真正的功能吗?

javascript

window.console.logInternet Explorer 9 在什么情况下定义?

即使window.console.log被定义,window.console.log.apply并且window.console.log.call是不确定的。为什么是这样?

有关IE8的相关问题:IE8中console.log发生了什么?


阅读 478

收藏
2020-04-25

共1个答案

一尘不染

在Internet Explorer9(和8)中,console仅在为特定选项卡打开开发人员工具时才显示对象。如果隐藏该选项卡的开发人员工具窗口,则该console对象在您浏览到的每个页面上均保持暴露状态。如果打开一个新选项卡,则还必须打开该选项卡的开发人员工具,以便console暴露该对象。

console对象不是任何标准的一部分,并且是文档对象模型的扩展。与其他DOM对象一样,它也被视为宿主对象,不需要像本机ECMAScript函数和对象那样Object从继承,也不需要从其方法继承Function。这就是原因applycall并且在这些方法上未定义。在IE9中,大多数DOM对象已得到改进,可以从本地ECMAScript类型继承。由于开发人员工具被认为是IE的扩展(尽管是内置扩展),因此它们显然没有获得与DOM其余部分相同的改进。

对于它的价值,您仍然可以Function.prototypeconsole带有一点bind()魔术的方法上使用一些方法:

var log = Function.prototype.bind.call(console.log, console);
log.apply(console, ["this", "is", "a", "test"]);
//-> "thisisatest"
2020-04-25