2011-12-27 25 views
1

我有一個頁面,其中一些部分用jQuery加載。其中許多零部件都有類似的JavaScript代碼:多個.ready()函數綁定中的錯誤

console.log("script X loaded"); 
$(document).ready(function() { 
    console.log("script X executed"); 
    // ... some code ... 
}); 

的問題是,所有的地方執行,直到我在其中的人至少一個更新到1.7.1 jQuery的

現在這些功能的功能不excuted,因爲它是在其他國家,在控制檯我可以讀:

script A loaded 
script A executed 
script B executed 

而且它不執行腳本B.我試圖測試擦除功能內的所有代碼腳本B.結束

你對可能發生的事情有任何線索嗎?

謝謝!

+2

無法看到詳細信息,例如如何加載未正確執行的零件。 – ThiefMaster 2011-12-27 11:48:45

+0

沒有得到你的問題。請清楚。 – 2011-12-27 11:53:04

回答

4

在我看來,這似乎是一種競爭條件,在這種競爭條件下,您以不適當的順序加載所需的組件,導致您的一些代碼永遠不會變爲準備好 - 因此永遠不會執行。

我可能完全錯誤,但通常情況下是這樣。

此外,如果偵聽器已連接到document,則可能是因爲某些時候您已打開文檔以供寫入,並且從未關閉它。

+0

就是這樣。我不得不嘗試擦除腳本A中的代碼。這是一個奇怪的錯誤,但是這個執行沒有結束,所以腳本B中的函數從未被調用過。謝謝! – francadaval 2011-12-28 08:05:52

+0

不客氣。這發生在我之前。根據網絡條件可能會滯後的可運行(線程)思考有時候有點不清楚。 – 2011-12-28 13:37:27

2

我建議你添加

try{ ... }catch(error){console.log("error in method X " + error)} 

包裝您的功能。這樣你就可以知道哪個方法發生了哪個錯誤。 我假設有一些異常會導致執行停止。

我也建議你使用chrome,點擊ctrl + shift + j來查看控制檯,添加「調試器」。在代碼 這樣

try{ 

    console.log("running method X"); 
    .... 
}catch(error){ debugger; console.log("error in method X : " + error); } 

這將使你在發生錯誤時調試代碼。