2012-07-19 34 views
2

我正在做一個Web項目,它有幾個JavaScript文件,特別是在Firefox上發現前端響應有點慢。與服務器端相關的因素已被排除,所以我得出結論,它必須與我的JavaScript有關。
我目前使用firebug進行調試,使用console.log(),或通過評論一些代碼在這裏和那裏。
但事實證明非常耗時!有沒有人有其他有效或更好的方法來幫助我?提前致謝。任何更好的方法來優化JavaScript?

** * ** * **下面是佔用大部分時間,@Bill代碼的一部分。 Firebug向「mainTabs」報告了一個未定義的錯誤。但是當我試圖在負載回調中重新聲明mainTab時,它保持不變。 ** * ***

var mainTabs = $("#main-tabs").tabs({ 
    selected: defaultTab, 
    cache: true, //set tabs to cache the content 
    load: function(event, ui){ 
      //want to preload the non-active tabs' content 
      console.log("mainTbas: "+mainTabs.html()); 
      mainTabs.tabs("load", ui.index+1); 
    } 
}); 
+1

如何提供一些代碼示例/細節? – 2012-07-19 04:52:29

回答

2

螢火蟲有你可以用它來找出這個問題可能是一個腳本分析器。它位於Console選項卡下,位於All按鈕之前。點擊Profile按鈕,然後刷新頁面(或者做任何在頁面上緩慢運行的內容)。再次點擊Profile按鈕可以得到一個表格,告訴你哪些功能花費最多的時間。從那裏開始嘗試並優化。

對於您的示例代碼,您需要首先聲明mainTabs。這應該工作(至少根據Preload JQuery UI tabs in the background這就是我假設你開始):

var mainTabs; // declare mainTabs first. 
mainTabs = $("#main-tabs").tabs({ 
       selected: defaultTab, 
       cache: true, //set tabs to cache the content 
       load: function(event, ui){ 
        mainTabs.tabs("load", ui.index+1); 
       } 
      }); 
+0

是的。只需使用探查器找到瓶頸。 – 2012-07-19 05:24:03

+0

謝謝,比爾。我試過了,但所有在結果表中調用的函數都來自jquery.js。這些funcs都是匿名的。它對我有一點幫助,因爲我不能確定問題出在哪裏。 – shengfengli 2012-07-19 06:15:09

+0

按包含時間排序,找到你的代碼調用了所有的jQuery。如果在jQuery中花費了很多時間,那麼有些東西是不對的。你有很多動畫或其他使用計時器的東西嗎?它幾乎看起來像你在一個循環或其他東西中創建計時器。 – Bill 2012-07-19 06:18:31