2013/11/13

IE 環境下的 console.log()

每次按 F12 開開發者工具只是要看變數內容而已,關掉後重新跑都要再撒一次中斷點實在有點累,便打算要來找找有什麼方法可以替代


Google 問到 IE8 以上的開發者工具有 console.log() 可以使用,但在 VS 下中斷點時發現 window.console 物件並不存在

繼續求神之後才知道原來 IE 下面只有當開發者工具打開時這個物件才可以取用

也就是說,如果爽爽的直接插一堆 log 到 js 下面,平時沒開開發者工具的狀況下就會到處噴錯啦

於是乎,把判斷 window.console 在不在 & 輸出訊息到 console 包起來變成

 function trace(str){
   try{
     if(typeof(window.console) == "object") console.log(str);
   }catch(e){}
 }

不過看到 stackoverflow 上面有大大說可以寫成

 if(typeof console === "undefined") {
     console = {
         log: function() {},
         info: function() {},
         error: function() {},
         warn: function() {}
         //其他的也順到~
     }
 }

似乎這樣是可以在 console 物件不存在的時候產生一個空的 function 讓瀏覽器不至於噴錯??

不知道,總之先 memo 下來

是說這些東西上正式環境的時候應該是要被拔掉才對,不然有 user 打開開發者工具就看得到開發人員輸出的 log 啦

不知道有沒有什麼比較聰明的方式來開關這個東西 @_@

--

是說要按下F12才有 console 物件的問題只存在IE8/9, IE10 之後不用打開開發者工具也可以有 console 物件了~

沒有留言:

張貼留言