2010-01-14 75 views
6

我使用Firebug的console.log()來調試我的網站。如果我嘗試在沒有Firebug的瀏覽器中查看我的網站,那麼我會得到一個控制檯未定義錯誤。 有沒有辦法優雅地避免這個錯誤?未安裝時忽略螢火蟲控制檯

我發現this potential solution,但看起來有點麻煩。 和想法?

回答

17

Firebug的源代碼提供了一個文件,要做到這一點:

firebugx.js

不要每天都推倒重來:)

+0

這實際上是一個非常好的解決方案,特別是如果您使用'warn'和'error'等其他函數。 – 2010-01-18 10:26:57

+3

鏈接失敗了。我認爲這是相同的: http://code.google.com/p/fbug/source/browse/branches/firebug1.5/lite/firebugx.js – 2010-05-12 02:50:25

+0

感謝馬修,我已經固定即使鏈接它不是該文件的最後一個版本(我在螢火蟲的svn資源庫中找不到任何地方) – OcuS 2010-12-23 16:14:39

2

我不認爲它比您鏈接到的解決方法好得多。當然可以把它融化爲只是定義console.log()並且不再休息,但實質上,你不會繞過這樣的構造。

只有想到的另一種方法是在每次調用console.log時檢查它,而這更加麻煩。

3

鏈接的解決方案基本上是這方面的一個變型(有一些額外的功能):

編輯下面的代碼當Firefox存在不實際工作。這會教張貼代碼不檢查只是爲了炫耀我沒有那麼1337運營商||的skillz:

window.console = window.console || {}; 
console.log = function(){}; 

其原因是,Firefox的控制檯實際上是一個getter只是property關閉窗口。因此我們無法設置它。相反,需要像這樣使用:

if (!window.console) { 
    window.console = {}; 
    window.console.log = function(){}; 
} 

此外,console.log(和console.warnconsole.error)將在WebKit瀏覽器,包括移動Safari瀏覽器,很酷吧工作?

+0

也產生「控制檯未定義」錯誤 – hoju 2010-01-14 06:01:23

+0

它的確如此,謝謝。我將編輯代碼。 – 2010-01-14 06:57:21

-1

關閉我的頭頂:

if(!console) 
{ 
    console = {}; 
    console.log = function() { }; 
} 
+1

也產生「控制檯未定義」錯誤 – hoju 2010-01-14 06:00:31

2

老實說,我會使用它。它不僅覆蓋了console.log(),還包括了其他所有console方法,並且行數很少。它在雅虎媒體播放器中首次使用的事實似乎表明,它也可以很好地跨瀏覽器。

這段代碼是你最好的選擇,實際上非常優雅,應該在大多數情況下都能正常工作。只要你在代碼片段上面評論它的用途(以免混淆未來的開發者),你應該沒問題。

0

我的最終解決方案:

if(!("console" in window)) 
    window.console = {log: function() {}}; 
1

@OcuS的解決方案確實是最好的,但您可以使用我的解決方案來提升它: C heck這種方式登錄到FF控制檯:Log to Firefox Error Console from JavaScript

然後添加到螢火蟲。JS這3條線內IF:

window.console['error'] = li 
window.console['warn'] = li 
window.console['debug'] = li 

所以你會看到每一個控制檯錯誤警告調試即使螢火蟲關閉

4

我總是創造我交的日誌瀏覽器包裝爲console.log相似的功能,它看起來像這樣:

function log(a){ 
try{ 
    console.log(a); 
    }catch(er){ 
    try{ 
    window.opera.postError(a); 
    }catch(er){ 
    //no console avaliable. put 
    //alert(a) here or write to a document node or just ignore 
    } 
    } 

} 

它可以擴展任何瀏覽器。在IE瀏覽器時,在調試我建議把在最後趕上這jQuery代碼:

$('body').append('<pre>'+JSON.serialize(a)+'</pre>'); 

您必須添加JSON.serialize到腳本。 IE瀏覽器沒有它(IE8可能有,我不知道)

1

您可以使用此代碼來檢查是否控制檯對象存在

if('console' in window && 'log' in window.console) 
{ 
    // code using console.log here 
} 

或本規範

if(typeof window.console != 'undefined' 
&& typeof window.console.log != 'undefined') 
{ 
    // code using console.log here 
} 

而且你可以閱讀這篇文章 http://alexandershapovalov.com/firebug-console-is-not-defined-60/ 裏面的帖子鏈接如何創建控制檯的jQuery包裝