2011-02-09 131 views
41

我在想,如何找到與javascript如果控制檯對象可用?找出是否有控制檯可用

我有問題,如果我忘記刪除調試輸出像console.log('sthg')我在幾個瀏覽器中得到錯誤,如果沒有螢火蟲或類似的活動。

感謝您的幫助

旁邊問題我感興趣的有關控制檯對象的所有信息。有任何人的一些文件鏈接,或者如此?這是一個標準嗎?等等...

回答

60

檢查屬性存在爲window成員:

if (window.console) { 
} 

旁邊問題我感興趣的有關控制檯對象的所有信息。有任何人的一些文件鏈接,或者如此?這是一個標準嗎?等等......

查看Firebug documentation for the Console API; Chrome和Safari實施了大多數(但不是全部)列在那裏的方法。有沒有標準定義控制檯應該是什麼,所以你需要測試每個瀏覽器,看看它是否支持該功能。

+0

什麼是chromes和IEs控制檯? :-) – helle 2011-02-09 15:15:47

+0

@helle:正如我所說的,Chrome實現了大部分的Firebug Console API方法。 IE實現了一些基本的,比如`warn`,`error`,`info`等,但是它並沒有實現它們,並且似乎沒有文檔列表,所以你必須嘗試一下你自己。 – 2011-02-09 15:23:35

+0

@AndyE你能解釋爲什麼檢查該屬性存在於窗口不如使用typeof強壯嗎?爲什麼我們不應該直接檢查windows.console變量,或者甚至只是在其他答案中調用全局控制檯? – matpop 2015-08-13 14:08:09

-4

也許......

if (console) { 
    // do stuff 
} 
+6

這會在未定義`console`的瀏覽器中引發錯誤。 – 2011-02-09 14:40:50

+0

是的......已經試過這個:-) – helle 2011-02-09 15:14:40

5

通過firebug定義,IE8(需要與F12打開開發人員工具),鉻等,但有沒有爲它定義的規範。有一個console.log wrapper,使它非常容易使用,跨瀏覽器日誌解決方案,所以如果控制檯不存在,您的代碼不會爆炸。

30

輸出到控制檯的一個不錯的簡單和短期的方式安全地如下:

window.console && console.log('Debug message'); 
2

我總是包括這在我的HTML頭的頂部之前,我加載任何東西。使用console.debug進行調試對我來說太長了。我喜歡切換這些控制檯功能的用法。

不知道代碼是如何優化的,但它總能完成這項工作。

(function() { 
    var consoleDisabled = false; 
    if (consoleDisabled) { 
     window.console = undefined; 
    } 
    if (window.console == undefined) { 
     window.console = { 
      debug: function() { 
       return true; 
      }, 
      info: function() { 
       return false; 
      }, 
      warn: function() { 
       return false; 
      }, 
      log: function() { 
       return false; 
      } 
     } 
    } 
    debug = (function(args) { 
     window.console.debug(args); 
    }); 
    info = (function(args) { 
     window.console.info(args); 
    }); 
    warn = (function(args) { 
     window.console.warn(args); 
    }); 
    log = (function(args) { 
     window.console.log(args); 
    }); 
})(); 
debug(somevar); 
info(somevar); 
warn(somevar); 
log(somevar); 
4
try{ 
console.log("test") 
} 
catch(e){ 
console={}, 
console.log=function(a){} 
} 

只是把它放在你的JS文件的頂部,然後使用的console.log();沒有任何擔心瀏覽器錯誤,我也有這個錯誤在IE9

7

這裏是我使用的。請記住,我只是半心半意地支持不支持控制檯的瀏覽器。我只用不完的console.log(),但你可以看到它是如何進行擴展以支持console.dir(),console.info()等

var console = console || { 
    "log": function(stuff) {} 
}; 

我喜歡它,因爲調用它不導致錯誤,但它返回[undefined],我認爲這是適當的。

注意,前(後)很多很多的人我們已經寫了類似的polyfills:

https://gist.github.com/search?q=console+%7C%7C+console

2

簡單的方法是:

if (window.console){ 
    console.log('do something'); 
} 

,而不是僅僅寫:

console.log('do something'); 
相關問題