你的位置:首页 > Java教程

[Java教程]IE中console的正确使用方法


问题来源:最近在学习easyui,观看的视频教程是孙宇的《EASYUI入门视频教程》  (点我下载),里面提到了console.info()这种方法,今天恰好遇到一位同事写的程序出现了不兼容IE的问题,或者说不兼容IE9及其以下版本浏览器,但是在google和火狐中运行良好,代码如下:

 1  onBeforeLoad: function (row, param) { 2       if (row) { 3        console.info(row.cenCi); 4        if(row.cenCi==0){ 5        $(this).treegrid('options').url = *************************************; 6        }else if(row.cenCi==1){ 7         if(row.isInject){ 8 //         alert("Inject"); 9         $(this).treegrid('options').url = *********************************;10         }else{11 //         alert("CITY-SRM");12         $(this).treegrid('options').url = ***********************************;13         }14         15        }16        17       } else{18        $(this).treegrid('options').url = ***************************;19        }20     }

 

这是treeGrid的一个方法,点击之后加载某一行的子节点,但是就是这一部分代码,在IE9及以下版本出现问题。

问题描述:每次在IE9中打开页面,点击节点,发现没反应,然后F12,控制台调试,再次点击,问题消失了。。。。再次点击,发现怎么点击能打开,关闭控制台也没问题,但是每次重新打开浏览器就会有描述的问题。

解决方法:最开始我以为是onBeforeLoad的问题,这个方法在不同浏览器中的支持也是不一样的,不过后来发现即使我修改其他的方法,结果还是一样的,然后就开始怀疑关于console了,其实孙宇的课程中明确说了,console.info()在IE是会出错的,但是百度之后,发现自从IE8之后IE就已经支持console这种方法了,具体用法参见这里, 但是为什么孙宇老师说IE出错呢?仅仅是指的IE8之前的版本吗,我就仔细看了一下MSDN window.console具体的解释,其中有一句这样的话,

看到这里才恍然大悟,原来console.info()是需要打开一次控制台才能支持的,或者说在IE当中是不应该直接写console.info()的。

最终的代码应该是这样的

if (window.console){

  console.info(row.cenCi);
}

其实最好的习惯是:调试结束后直接删除这句话!发布干净的代码!