【发布时间】:2014-08-28 04:01:36
【问题描述】:
我正在使用django-debug-toolbar(最新版本,v1.2.1)并且我在控制台中不断收到此错误:
Empty string passed to getElementById()
对于 jQuery 中的这段代码(第 2757 行):
...
// HANDLE: $(#id)
} else {
elem = document.getElementById( match[2] );
...
我单击的调试工具栏中的每个链接都会再次出现此警告。
当我注释掉我的主要 jQuery 源文件时,调试工具栏会起作用。另外,在 Django admin 中,它运行良好,大概是因为 Django admin 使用了不同的获取 jQuery 的方法。
我尝试了@Carlton Gibson 的回答,但这并不能解决我的问题。我也尝试过本地 jQuery 和 CDN 以及几个不同的版本,但都无济于事......
我尝试了不同版本的 jQuery,并使用了django-debug-toolbar 文档中提供的所有可能设置。我被困住了,我真的很喜欢这个工具并希望它为我工作。
编辑
由于我收到了一些额外的 cmets 和答案,我想我会进行编辑以解释我尝试过的内容。我尝试了所有建议都没有成功。但是,目前,我从另一篇关于 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,它甚至没有出现。
编辑
这里是 base.html 中导入 JS 的块。请记住,这是一个快照,它已经发生了很大变化。
<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,它正在工作。我在两个项目中进行了测试,它似乎是固定的。感谢大家的帮助!
【问题讨论】:
-
你的网站/项目是否碰巧使用了 RequireJS?
-
不是故意的...在关注的项目中使用的唯一库是 Bootstrap 和 jQuery...
-
我提到这个的原因是目前有一个错误报告:github.com/django-debug-toolbar/django-debug-toolbar/issues/605。它建议设置
DEBUG_TOOLBAR_CONFIG = {'JQUERY_URL': None}然后确保在 requireJS 之前加载 jQuery。 -
另外,我是否有可能要求您显示相关的 base.html 模板部分,您在其中加载 CSS/JS 以用于 bootstrap/jQuery?
-
是的,我看到了那个错误...有关代码,请参见 OQ...
标签: jquery django django-debug-toolbar