我有一個插件可以訪問許多元素上的length
屬性。但是,JavaScript控制檯指向jquery.min.js的第12行。未捕獲TypeError:無法讀取未定義的屬性「長度」
我該如何回溯到我的插件中查找違規行?
我有一個插件可以訪問許多元素上的length
屬性。但是,JavaScript控制檯指向jquery.min.js的第12行。未捕獲TypeError:無法讀取未定義的屬性「長度」
我該如何回溯到我的插件中查找違規行?
如果使用縮小的腳本任何調試器(如完全最好的螢火蟲)會告訴你同樣的問題的行並將此信息是無用的(精縮腳本難以閱讀和理解,他們都寫在1線)。
一些方法來解決這樣的問題:
如果您使用Chrome,您可以使用內置的開發人員工具(我更喜歡使用Firebug),請轉至"View > Developer > Developer Tools"
。在控制檯中的錯誤往往會有一個向前的小箭頭,當點擊它時會顯示有關錯誤的更多詳細信息。
Javascript錯誤不可能起源於庫,而是引用該庫中的方法/函數的代碼,因此您希望查看控制檯右側列出的所有問題行並選擇與你寫的代碼相對應的行將成爲你的問題所在。
您不太可能通過查看jQuery的源代碼來找出問題出在哪裏。問題出在你的代碼中。只是jQuery不能使用你傳遞給它的未定義變量。
我重新描述了我可能含糊不清的問題。我明白錯誤不是來自圖書館;我只是想知道如何回溯到我的插件中查找有問題的行。 – 2013-03-23 19:53:37
@maček我的回答在這方面對你有幫助嗎?我希望如此,這是我的意圖。 – 2013-03-24 20:02:57
除了調試器/螢火蟲,一種簡單的方法來追蹤(如果你有一個沙盒版本的網站)是單獨註釋每個插件,並檢查錯誤是否消失。
我經常發現這些模棱兩可的框架錯誤是AJAX請求錯誤的結果。如果是這樣,那麼您的開發人員工具最有可能包含一個網絡選項卡,這可能會突出顯示錯誤的真正來源。
如果您使用jQuery(或任何JavaScript框架)來處理AJAX請求的結果,則格式和處理錯誤都是額外的且經常被忽略的步驟。
這聽起來像我所需要的,因爲在我的情況下,導致「Uncaught TypeError:無法讀取屬性長度」未定義「err是我自己的: alert(listId.length> 0?」匹配項目的ID:「+ id:「找不到匹配的項目!」); ...但網絡選項卡沒有顯示任何東西(CDT)。 – 2015-10-13 22:32:42
我有螢火蟲,但我應該把'debugger'關鍵字放在我的腳本中?猜/檢查? – 2010-06-14 19:15:52
@macek:參見使用Firebug調試JavaScript:http://thecodecentral.com/2007/08/01/debug-javascript-with-firebug – Sarfraz 2010-06-14 20:27:53