最近一次项目更新上线后,业务接到好多投诉,说原本好用的功能现在出现了问题。而且只出现在Ie8,和360浏览器上,360浏览器用的的IE内核,所以问题是出现在IE8浏览器上。开始想到的就是IE8的兼容问题。但是当打开F12调试时问题就恢复了,由于不熟悉IE浏览器调试忽略了报错信息,一直认为是引用的插件有问题。如此反复测试,一度陷入无从下手的局面。后来与同事沟通后,查看了报错信息。信息显示console未定义。才意识到,之前为了日志输出用户信息,对原来插件代码做了简单的修改,调试用的congsole.log()未及时删除。删掉后打包测试问题解决。
后来查看资料才知道:那是因为IE8会将console.log()默认处理为错误逻辑,但是在F12下处理为控制台输出。
在chrome下和Firefox下都不会有太大问题,但是在IE8 下调试时使用了console.log(),就出现一些问题。
在IE8中要想使用它调试代码必须要先开启F12,如果不开启F12,在浏览器的下方就会显示页面有报错。比较有意思的是,但我们将F12关闭,刷新页面,IE8 仍然将console.log()处理为控制台输出,即打开过一次F12,就会一直识别console.log()。因此我们常常会在调试后忘记删除console.log()语句。
怎样让报错重现:开启一次F12后,会识别console.log()。我们需要清空浏览器缓存,再重启浏览器,不打开F12,就会重现了。
因此我们应该做的是养成好的编程习惯,不要滥用console.log(),调试后记得注释掉或删掉调试代码。血淋淋的教训,与大家分享!!