Internet Explorer(8 和 9)页面上的 Javascript 打开开发人员工具 到达 console.log()
,已定义 - 但实际日志中没有任何内容。
尝试过的事情:
- 使用
alert()
仔细检查console
是否已定义并且console.log
是一个函数。 - 在代码确实到达
console.log()
行之前和之后检查alert()
, - 检查任何 IE 后备代码,如
if(ie){console={log:function(){}}}
,删除指向库的链接并检查代码片段中是否提及console
- 检查 IE 的设置并启用与调试相关的任何内容
- 通过使用
console.log()
(例如 http://jsbin.com 记录“init”和“runner”)加载第 3 方页面来检查 IE 是否被破坏 - 将
console
换成window.console
所以控制台在那里并且处于事件状态,但没有控制台消息显示在实际控制台中(在“脚本”选项卡或“控制台”选项卡上)。
还有什么可以阻止 console.log()
实际记录任何内容,即使开发者工具打开并且 console.log
是一个已定义的函数?
最佳答案
在这起案件中,罪魁祸首竟然是 firebug lite。
我的测试开发页面经常包含这个(具有讽刺意味的是)以帮助在 IE 中进行某些类型的调试:
<!--[if IE]>
<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>
<![endif]-->
由于它作为注释出现在文本编辑器中,因此很容易被意外忽略。
在显示 firebug lite 之前和之后提醒 alert(console.log);
将 console.log 函数从 native 代码更改为:
function(){return f.apply(c,arguments)}
...出于某种原因(目前,此处)然后什么都不做。
在没有 Firebug Lite 参与的情况下,IE 中的 alert(console.log);
给出了这个:
function log() {
[native code]
}
...如果 f12 Dev Tools 打开,则执行其通常的日志记录技巧,如果未打开,则崩溃。
关于javascript - console.log() 已定义但未登录 IE - 空控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321872/