解决IE浏览器不支持console,报错未定义问题

问题产生:

  前端开发调试经常用到console.info进行打印信息,前几天调试的时候Google功能完全OK,但是IE8浏览器点设置按钮完全没反应,看了修改的代码貌似没看出什么存在浏览器兼容性问题的呀,无意间点设置时发现浏览器底部闪了一下“网页存在错误”的提示,闪过后就是完成的标志,点进去弹出错误框,直接看图:

解决IE浏览器不支持console,报错未定义问题_第1张图片

  网页提示console未定义,一脸懵逼,这个都可以出错,百度了一下发现低版本IE6/7/8/9浏览器是没有定义console对象的,所以代码会中断执行。

解决方法:

  第一个思路就是创建一个console对象,实际就是console.info方法,为了能够使用console的log、warn等方法还是最好写个适用性强的好了,代码如下:

window.console = window.console || (function () {
    var c = {}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile
    = c.clear = c.exception = c.trace = c.assert = function () { };
    return c;
})();

 当然,在解决问题过程中,我又发现如果打开浏览器的开发人员工具(F12)再刷新页面的话,页面又OK了,在控制台使用console.info又是可以打印信息的,这说明在将开发人员工具打开后,浏览器自动创建了console这个对象。这就给我们提供了第二条思路,就是在页面初始化的时候用js代码打开开发人员工具,然后关上,最后再刷新页面,问题应该也可以解决。但这个方法太绕所以就没试,有兴趣的可以尝试一下。

第二个思路就是简单暴力的注释该代码,但是为了方便调试,还是建议采用第一种方法。

你可能感兴趣的:(JavaScript)