IE中console的正確使用方法


本文出處原文鏈接 轉載請注明出處 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);
}

其實最好的習慣是:調試結束后直接刪除這句話!發布干凈的代碼!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM