假设我有以下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)
答案 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();
});