IE 9控制台对象未初始化,直到打开开发人员控制台

时间:2013-05-08 01:58:50

标签: javascript jquery internet-explorer

假设我有以下HTML

<div id="box" style="display:none;">Hello World</div>
<button id="showbutton">Show The Box</button>

按照JQuery按钮处理程序显示div

$('#showbutton').click(function() {
    console.log('test');
    $('#box').show();
});

请注意console.log声明。如果我点击新打开的IE9浏览器上的按钮,它将无法正常工作。似乎控制台对象尚未初始化。但是,如果按F12打开开发人员控制台,处理程序将起作用。

Chrome / Firefox上不存在此行为。

这是IE上控制台对象的预期行为吗?是否有与IE上的javascript控制台对象支持相关的文档?

演示的JSFiddle在这里:http://jsfiddle.net/6tHB5/

要在IE上重现问题,您必须先关闭浏览器,再次运行浏览器,然后立即单击按钮而不打开开发者控制台(F12)

2 个答案:

答案 0 :(得分:3)

是的,遗憾的是IE的运作方式。有几种可能的解决方案:

如果您想避免JS错误,可以事先检查。

$('#showbutton').click(function() {
  if (console) console.log('test');
  $('#box').show();
});

让您自己的log功能自动检查。

function log(){
  if (console) console.log.apply(console, arguments);
}

您还可以在页面顶部模拟出这样的控制台,以简化生活:

if (!window.console) window.console = {log: function(){}};

答案 1 :(得分:0)

在IE 9中,控制台对象在打开之前未定义,因此您应该在日志之前检查它:

$('#showbutton').click(function() {
  if (typeof console != 'undefined') console.log('test');
  $('#box').show();
});