2009-05-27 24 views

回答

14

如果你離開的console.log()調用你的產品代碼,然後人訪問使用Internet Explorer的網站將有JavaScript錯誤。如果這些人有額外的調試工具配置,那麼他們會看到討厭的對話框或彈出窗口。

快速搜索發現此線程討論方法,如果Firebug控制檯存在檢測:http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html

2

我已經有很多由此造成的頭痛。

我使用的console.log()很多,直到最近,發現它會導致整個JS代碼在FF的版本失敗不使用螢火蟲。

通常我纔去住,並註釋掉它運行的發現。

d

14

被這個前咬傷。理想情況下,所有console.log語句都需要在生產之前刪除,但這很容易出錯,開發人員總是忘記或僅在FF + Firebug中進行測試。

一種可能的方案是,如果一個尚未定義創建一個虛擬控制檯對象。謹慎的

if(typeof window.console == 'undefined'){ 
    window.console = { 
     log:function(){} 
    }; 
} 

一個字:它曾經是10.4,任何調用CONSOLE.LOG會拋出一個安全異常的控制檯對象是在Mac OS Dashboard構件使用的預留對象Safari的情況。不知道這是什麼情況,今晚會檢查。

+0

最新版本10.5的Safari實際使用在他們的網站開發工具的console.log()API簡單的包裝,所以這可能如果您支持最新版本,則不會成爲問題。 – ajm 2009-05-27 14:26:43

+0

不夠公平,認爲它們不會讓它損壞太長 – 2009-05-27 15:05:52

8

個人而言,我修改了我的壓縮機前一陣子來剔除控制檯參考預壓縮。幾分鐘後添加一個正則表達式可以節省一生的麻煩。

3

想到我會爲任何js調試添加一個非常好的提示....使用關鍵字「調試器」,它就像代碼中的斷點,螢火蟲檢測到它也MSIE(如果你有Visual Studio)檢測它和我說它是一個斷點。

並非許多人似乎知道這一點,但我發現它invaluble ...如果還有心不是有安裝在運行該代碼的機器上的一個調試器,沒有任何反應和代碼經過精細。雖然我不建議讓他們留在那裏。

2

某些壓縮機會去掉以; ;;爲前綴的任何行。 (這是一個合法的序列,有三個空的語句)。這樣你就不會嚴格限制於控制檯引用(也就是說,你可以做一些計算,然後在最後使用console.log()結果,壓縮器可以將其全部取出。)我使用JavaScript::Minifier

1

我在OOP的Javascript使用,使我自己的包裝日誌,檢查是螢火蟲存在:

myclass.prototype.log = function() 
{ 
    if(typeof window.console != 'undefined') 
    { 
     console.log.apply(null, arguments); 
    } 
} 

只要致電:

this.log(arg1, arg2, ...) 
0

只是一個提醒,IE瀏覽器開發工具不支持在console.log上應用()。

當dev工具處於活動狀態時,調用console.log.apply()將引發IE8中的異常。