本文出处原文链接 转载请注明出处 http://www.cnblogs.com/havedream/p/4519538.html

问题来源:最近在学习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);
}

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

版权声明:本文为havedream原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/havedream/p/4519538.html