0

假设我有以下 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)

4

2 回答 2

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(){}};
于 2013-05-08T02:01:42.450 回答
0

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

$('#showbutton').click(function() {
  if (typeof console != 'undefined') console.log('test');
  $('#box').show();
});
于 2014-06-06T12:23:02.783 回答