2009-09-11 121 views
5

我正在研究一個新的項目,它有一些複雜的JavaScript。我不能發佈任何代碼,所以這不是我的問題。Firebug可以運行我的網站嗎?

我有一個腳本,在Firefox 3.0的作品。有人指出,該腳本在Firefox 3.5中不起作用,所以我試圖讓它工作。事實上該腳本沒有產生預期的結果,所以我安裝了最新版本Firebug,啓用了console並刷新了頁面。

哇,它的工作。

沒有錯誤,警告什麼都沒有。

所以我禁用了控制檯,然後它沒有工作了...

這是怎麼回事? Firebug控制檯以某種方式改變了Firefox中的某些內容,使我的腳本能夠正常工作?有關下一步的建議嗎?(除了要求未來的訪客安裝Firebug ...)

回答

10

它可能是一些簡單的事情,忘記評論一個電話console.log()在你的JavaScript的某個地方?

如果您有引用掛起,並且用戶沒有安裝Firebug,您將得到一個運行時錯誤,將停止腳本的執行。

+2

+1這似乎是最有可能的罪魁禍首 – patros 2009-09-11 19:50:17

+0

是的,這聽起來很可能。我想了一下,但是假設你一開始沒有安裝螢火蟲,它不會在那裏,但是在閱讀了這個答案之後,我們意識到如果你複製並粘貼了一些調試代碼,那麼很有可能會發生這種情況。 +1 – NateDSaint 2009-09-11 19:53:47

+0

我不知道,我必須向開發者提供疑問的好處,他能夠認識到這樣一個明顯的錯誤。 – Zoidberg 2009-09-11 19:58:52

7

這聽起來像是有一個機會,你有一個線程問題,FireBug正在分析,並可能放慢其中一個線程,以便它有時間來完成在下一步解決之前。

你可能使用ajax,並且有什麼東西在等待響應?或者你可能在加載一個取決於DOM中的其他東西的對象時做了些什麼?

更新: 對於那些磕磕絆絆的人來說,JavaScript中的「線程」實際上只存在於抽象(網絡工作者等)中。我誤用了這個詞。我真的想到在另一個準備好之前返回的異步操作。

+0

這將使意義。 – Zoidberg 2009-09-11 19:45:19

+0

我不知道這是對的,但爲了良好的分析而得到+1 – marcgg 2009-09-11 19:52:11

+0

我正在使用ajax是的,我認爲Justin是正確的console.log():) – Ropstah 2009-09-11 19:58:40

6

檢查console.log(),console.debug()中的代碼。如果console未定義(如預期的),調用window.console對象方法會引發錯誤。

在大多數情況下,您可以輕鬆刪除或註釋該行。

+0

謝謝!你是第一個回答,所以信用是你的:) – Ropstah 2009-09-11 20:01:27

+0

@ropstah不是說這很重要......但檢查你的數學。這是最後一個答案,而不是第一個答案。 – 2009-09-11 20:17:07

+0

哎呀,你是對的,當我在閱讀Muscle和你的「9分鐘前」Justin時閱讀「8分鐘前」時,確實受到影響:) – Ropstah 2009-09-12 09:00:52

0

我寫了一個簡單的firebug包裝(我只是使用調試,但它應該給你你需要複製其他方法),只有當控制檯在那裏寫入,所以我可以使用螢火蟲,不需要去註釋掉我的調試語句,並且它沒有爲沒有它的人打破網站。

如果您使用此代碼,然後用fbconsole.debug代替console.debug的你將永遠不會有這樣的問題:由於Firefox的JavaScript引擎似乎得到與每一個版本快

function fbconsole() { 
    this.debug = function (val) { 
     if(typeof(console) !== 'undefined' && console != null) { 
      console.debug(val); 
      } 
     } 
    } 
var fbconsole = new fbconsole(); 
+0

不錯,但我認爲在任何事情進行之前,你最好刪除調試語句:) – Ropstah 2010-01-23 00:17:29

相關問題