2013-05-08 24 views
0

假设我有以下HTML未初始化,直到开发者控制台,IE 9控制台对象打开

<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控制台对象支持相关的文档?

演示的JSF粉丝在这里:http://jsfiddle.net/6tHB5/

要重现于IE浏览器的问题,你必须先关闭浏览器,再次运行浏览器,然后单击按钮直线距离,而无需打开开发者控制台(F12)

回答

3

是的,这是不幸的是IE浏览器是如何工作的。有几种可能的解决方案:

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

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

使您自己的log函数自动检查。

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

你也可以模拟出在你的页面的顶部控制台这样使生活更轻松:

在IE中打开前9控制台对象没有定义,所以你应该检查
if (!window.console) window.console = {log: function(){}}; 
0

它在日志之前:

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