2014-07-07 30 views
4

我使用django-debug-toolbar(最新版本V1.2.1),我不斷收到此錯誤在控制檯:Django的調試工具欄裏沒有在Django網站使用jQuery

Empty string passed to getElementById() 

關於這一位的jQuery中的代碼(行2757):

... 
// HANDLE: $(#id) 
} else { 
elem = document.getElementById(match[2]); 
... 

單擊調試工具欄中的每個鏈接都會給出另一個此警告。

當我註釋掉我的主jQuery源文件時,調試工具欄的作品。另外,在Django管理員中,它工作正常,大概是因爲Django管理員使用不同的方法來獲取jQuery。

我試過@Carlton Gibson的答案,但這並不能解決我的問題。我也嘗試過本地jQuery,並從CDN和幾個不同的版本無濟於事...

我試過不同版本的jQuery,並使用django-debug-toolbar文檔中提供的所有可能的設置。我被卡住了,我真的很喜歡這個工具,並希望它爲我工作。

編輯

既然我已經收到了一些補充意見和答案,我想我會做一個編輯來解釋什麼,我已經試過。我嘗試了所有建議,但沒有成功然而,目前,我所看到的,我是從另一篇關於RequireJS和django-debug-toolbar承認另一個錯誤:

GET http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js [HTTP/1.1 304 Not Modified 133ms] 
ReferenceError: jQuery is not defined localhost:8000:119 
TypeError: djdt is undefined toolbar.js:297 
Empty string passed to getElementById() 

即使jQuery是加載,我告訴django-debug-toolbar使用我的版本(與DEBUG_TOOLBAR_CONFIG = { 'JQUERY_URL': '', }),我米仍然收到錯誤,DjDT不起作用。這一次,由於TypeError,它甚至沒有出現。

EDIT

這裏就是JS導入的base.html塊。請記住,這是一個快照,它已經改變了很多。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js" defer></script> 
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js" defer></script> 

我也有一個回到頂部小部件我用這可能是罪魁禍首。由於我已經使用這段代碼很久了,我從來沒有想過這是一個問題,但現在我懷疑它可能是。此外,由於錯誤與id有關,腳本使用class,所以我駁回了它。但是當我發表評論時,DjDT的作品。

在這裏的帖子的幫助下,我解決了這個問題。不知道它與id的關係如何,但我在a選擇器中使用的返回頂部小部件發生衝突。我改爲class,它的工作。我在兩個項目中進行了測試,似乎是固定的。感謝所有的幫助!

+0

您的網站/項目是否恰巧使用RequireJS? –

+0

不是故意的...在關注的項目中使用的唯一庫是Bootstrap和jQuery ... – nicorellius

+0

我提到這個的原因是,目前有一個bug報告:https://github.com/django-debug -toolbar/Django的調試工具欄/問題/ 605。它建議設置'DEBUG_TOOLBAR_​​CONFIG = {'JQUERY_URL':None}'然後確保在requireJS之前加載jQuery。 –

回答

1

不知道這是否會爲你工作,但服用線索,從this answer,嘗試添加下列到您settings.py,看看它是否工作

def show_toolbar(request): 
    return True 
SHOW_TOOLBAR_CALLBACK = show_toolbar 

將由調試工具欄,以確定是否有效去除所有檢查它應該或不應該加載自己;它總是會加載。

既然您在comment中提到您要在</body>標記的底部導入jquery,請確保all your tags a closed;您的模板中可能會缺少標籤。另外,如果您將jquery腳本標記放在底部以獲得性能,您可以使用async or defer進行研究。

編輯1更多建議基於

你使用Firefox或Chrome等任何擴展的意見?檢查this。 此外,請確保如果您正在通過'#'選擇器查詢 - 確保選擇器是唯一的(應該是),否則最終會出現FireFox中的this錯誤。

我的猜測是,你有一個元素在你的html中有一些id,在django-debug toolbar的模板中使用,你也可以用#選擇器查詢它。

+0

感謝您的建議。'django-debug-toolbar'實際上可以正常加載,只是點擊面板不起作用(而是拋出上面提到的錯誤)。我嘗試了你的想法,但無濟於事(但'defer'和'async'方法無論如何都是很好用的)。我剛剛通過我的模板,並確認所有標籤已關閉,一切都看起來不錯。這真是太離奇了,因爲只要我刪除jQuery,'django-debug-toolbar'就可以正確運行。 – nicorellius

+0

@nicorellius更多建議:)。您是否使用Firefox或Chrome等的任何擴展?檢查[this](http://stackoverflow.com/a/10790470/1860929)。此外,請確保如果您正在通過'#'選擇器查詢 - 確保選擇器是唯一的(應該是),否則您將以ff([link](http://stackoverflow.com/) a/14060242/1860929)) –

+0

好想法(讓他們來吧)...我只是通過停用所有附加組件和擴展並再次測試FF來檢查這一點。沒有骰子。然後,我繼續在Chrome和Opera中進行測試,DJDT在其中沒有任何效果。說真的,我已經準備好用一個香草設置來測試這個虛擬機,因爲它讓我感到非常緊張。 – nicorellius

5

既然你已經在頁面上有jQuery,你可以告訴調試工具欄不要加載它的版本。嘗試添加該用戶的設置:

DEBUG_TOOLBAR_CONFIG = { 
    'JQUERY_URL':'', 
} 

(見config docs多一點。)

希望這足以解決您的問題。

+0

感謝您的建議。我把它添加到我的本地設置文件中,它肯定有效,例如強制使用我的jQuery版本,但是當單擊'debug_toolbar'鏈接時仍然沒有數據顯示...同樣的錯誤,'傳遞給getElementById()的空字符串'。 – nicorellius

+0

嗯。好奇。 >這一次,我在代碼中做了一些修改,認爲它們不會有效果...... 我只能問:「你做了什麼? - 恢復,看看它是否工作:) –

+0

所以這個問題現在讓我把我的頭靠在牆上...我現在有多個Django項目,一對是新的,沒有一個具有運行的'django-debug-toolbar '除了沒有在頁面上加載jQuery的版本。我已經嘗試了很多東西,我帶着賞金回到了這裏。 – nicorellius

相關問題