2010-10-05 16 views
3

我正在寫一個JavaScript/HTML5畫布庫來爲Web音頻應用程序提供基本的GUI元素。Javascript + Firebug console.log(),如何獲取異常?

有一個小小的演示腳本,它可以在庫中創建小部件並在GUI中組裝它們。你可以找到它@http://bitterspring.net/webshifter/

問題是,它似乎在Chrome和Firefox 3.6 - 4.0上正常工作,但在最後的情況下,只有螢火蟲。如果沒有螢火蟲,腳本似乎在屏幕上沒有任何可視化的東西,而螢火蟲卻可以。

唯一的與螢火蟲相關的代碼片段是我用來跟蹤庫的行爲的一些console.log語句。但是,我從Firebug論壇中瞭解到,這些語句應該對沒有Firebug功能的瀏覽器沒有影響。在這些情況下,什麼能阻止示例腳本的工作?順便說一下,庫+示例代碼在http://github.com/janesconference/KievII上最新承諾。

編輯:似乎,當控制檯未定義,console.log()引發異常。有沒有辦法保持代碼的日誌行並沒有得到例外? (是的,我們可以檢查是否控制檯=不確定,但有沒有更好的辦法!?)

編輯:這確實的伎倆,似乎(Font

if (typeof console=="undefined"){console={log:function(A){var B=false;if(B){alert(A)}}}} 
+3

您是否檢查了Javascript錯誤控制檯?在沒有「控制檯」對象的窗口中運行的代碼中對「console.log」的引用肯定會引發異常。 – Pointy 2010-10-05 22:40:24

+0

因此,爲了使它在任何瀏覽器中都能正常工作,我應該刪除console.log調用?在firefox 3.6中檢查了 – janesconference 2010-10-05 22:48:01

+0

沒有螢火蟲。問題在於「控制檯」未定義。總是認爲通過控制檯登錄是透明的:| – janesconference 2010-10-05 23:54:45

回答

2

對,console對象不默認情況下可在所有瀏覽器中使用。

此代碼:

if (typeof console=="undefined"){console={log:function(A){var B=false;if(B){alert(A)}}}} 

- 目前禁止在Firefox 4的Web控制檯console支持,因爲它試圖打開時注入console對象,不會做,如果頁面已經定義了一個console對象。

console有趣的包裝處理這個問題是:http://benalman.com/projects/javascript-debug-console-log/,雖然我沒有嘗試過自己。

+0

其實它與FF4一起工作。你是什麼意思?「它試圖在打開時注入控制檯對象,如果頁面已經定義了控制檯對象,將不會這樣做」? – janesconference 2010-11-09 14:32:49

+0

@janesconference:該句中的「it」指的是Web控制檯。在我寫信的時候,我認爲如果你在頁面中運行該代碼並在之後打開Web控制檯,console.log()消息仍然會由你的包裝器alert()。我不記得我是否測試了這一說法。 – Nickolay 2010-11-09 16:29:58