我使用Firebug的console.log()來調試我的網站。如果我嘗試在沒有Firebug的瀏覽器中查看我的網站,那麼我會得到一個控制檯未定義錯誤。 有沒有辦法優雅地避免這個錯誤?未安裝時忽略螢火蟲控制檯
我發現this potential solution,但看起來有點麻煩。 和想法?
我使用Firebug的console.log()來調試我的網站。如果我嘗試在沒有Firebug的瀏覽器中查看我的網站,那麼我會得到一個控制檯未定義錯誤。 有沒有辦法優雅地避免這個錯誤?未安裝時忽略螢火蟲控制檯
我發現this potential solution,但看起來有點麻煩。 和想法?
我不認爲它比您鏈接到的解決方法好得多。當然可以把它融化爲只是定義console.log()
並且不再休息,但實質上,你不會繞過這樣的構造。
只有想到的另一種方法是在每次調用console.log時檢查它,而這更加麻煩。
鏈接的解決方案基本上是這方面的一個變型(有一些額外的功能):
編輯下面的代碼當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.warn
,console.error
)將在WebKit瀏覽器,包括移動Safari瀏覽器,很酷吧工作?
也產生「控制檯未定義」錯誤 – hoju 2010-01-14 06:01:23
它的確如此,謝謝。我將編輯代碼。 – 2010-01-14 06:57:21
關閉我的頭頂:
if(!console)
{
console = {};
console.log = function() { };
}
也產生「控制檯未定義」錯誤 – hoju 2010-01-14 06:00:31
老實說,我會使用它。它不僅覆蓋了console.log()
,還包括了其他所有console
方法,並且行數很少。它在雅虎媒體播放器中首次使用的事實似乎表明,它也可以很好地跨瀏覽器。
這段代碼是你最好的選擇,實際上非常優雅,應該在大多數情況下都能正常工作。只要你在代碼片段上面評論它的用途(以免混淆未來的開發者),你應該沒問題。
我的最終解決方案:
if(!("console" in window))
window.console = {log: function() {}};
@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
所以你會看到每一個控制檯錯誤,警告和調試即使螢火蟲關閉
我總是創造我交的日誌瀏覽器包裝爲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可能有,我不知道)
您可以使用此代碼來檢查是否控制檯對象存在
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包裝
這實際上是一個非常好的解決方案,特別是如果您使用'warn'和'error'等其他函數。 – 2010-01-18 10:26:57
鏈接失敗了。我認爲這是相同的: http://code.google.com/p/fbug/source/browse/branches/firebug1.5/lite/firebugx.js – 2010-05-12 02:50:25
感謝馬修,我已經固定即使鏈接它不是該文件的最後一個版本(我在螢火蟲的svn資源庫中找不到任何地方) – OcuS 2010-12-23 16:14:39