IE9是否支持控制台.log,它是否是真正的功能?
2022-08-30 01:11:55
Internet Explorer 9 中定义了哪些情况?window.console.log
即使已定义,并且未定义。这是为什么呢?window.console.log
window.console.log.apply
window.console.log.call
[IE8 的相关问题:IE8 中的控制台.log发生了什么变化?
Internet Explorer 9 中定义了哪些情况?window.console.log
即使已定义,并且未定义。这是为什么呢?window.console.log
window.console.log.apply
window.console.log.call
[IE8 的相关问题:IE8 中的控制台.log发生了什么变化?
在 Internet Explorer 9(和 8)中,仅当为特定选项卡打开开发人员工具时,才会公开该对象。如果隐藏该选项卡的开发人员工具窗口,则该对象将针对您导航到的每个页面保持公开状态。如果打开新选项卡,则还必须打开该选项卡的开发人员工具,以便公开对象。console
console
console
该对象不是任何标准的一部分,并且是文档对象模型的扩展。像其他 DOM 对象一样,它被视为宿主对象,不需要像本机 ECMAScript 函数和对象那样从 继承,也不需要从 继承它的方法。这就是原因,并且在这些方法上未定义。在 IE 9 中,大多数 DOM 对象都得到了改进,可以从本机 ECMAScript 类型继承。由于开发人员工具被认为是IE的扩展(尽管是内置扩展),因此它们显然没有获得与DOM其余部分相同的改进。console
Object
Function
apply
call
值得一提的是,您仍然可以在具有一点bind()
魔法的方法上使用一些方法:Function.prototype
console
var log = Function.prototype.bind.call(console.log, console);
log.apply(console, ["this", "is", "a", "test"]);
//-> "thisisatest"
此控制台的一个简单解决方案.log问题是在 JS 代码的开头定义以下内容:
if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
这适用于所有浏览器。这将在调试器未处于活动状态时为控制台.log创建一个虚拟函数。当调试器处于活动状态时,将定义方法控制台.log并正常执行。