django-debug-toolbar在Django网站中不使用jQuery

时间:2014-07-07 15:42:21

标签: jquery django django-debug-toolbar

我正在使用django-debug-toolbar(最新版本,v1.2.1)并且我在控制台中一直收到此错误:

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,它甚至没有出现。

修改

以下是导入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并且正在工作。我测试了两个项目,似乎是固定的。谢谢你的帮助!

2 个答案:

答案 0 :(得分:5)

由于您已经在页面上获得了jQuery,因此您可以告诉调试工具栏不要加载它的版本。尝试将其添加到您的设置中:

DEBUG_TOOLBAR_CONFIG = {
  'JQUERY_URL':'',
}

(请参阅config docs了解更多信息。)

希望这足以解决您的问题。

答案 1 :(得分: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的模板中使用,你用#选择器查询它。 / p>