使用内置版本的 Dojo 时出错(但不是未压缩的源代码)

Error using built version of Dojo (but not the uncompressed source)

我注意到在使用未压缩的 Dojo 源代码时有些奇怪,我们的代码运行正常,没有错误。到目前为止,我从档案中尝试了这两个

dojo-release-1.10.6-src 和 dojo-release-1.10.8-src

然而,当我切换到内置版本时,

dojo-release-1.10.6 或 dojo-release-1.10.8

使用dojo.query

时出现错误

TypeError: root.getElementsByTagName is not a function

我的函数调用如下所示

var dom_frag = domConstruct.toDom(response);
var title = dojo.query(".accordion_title", dom_frag)[0];

其中响应包含 HTML 字符串。 (这里太长了 post)

EDIT:显示 'dom_frag'

内容的调试器图像

确保您的 root 实际上是一个 DOM 元素,如:

the Element.getElementsByTagName() method returns a live HTMLCollection of elements with the given tag name. The subtree underneath the specified element is searched, excluding the element itself. Ref.

好的,您检查过 dom_frag 变量是否是单个 dom 节点吗?如果 dom 片段是多个节点,那么 dojo.query 将不起作用,因为它需要搜索单个 dom 节点的子节点。 要解决这个问题,请尝试用单个节点包装 toDom 内容...像这样:

var dom_frag = domConstruct.toDom("<div>"+response+"</div>");
var title = dojo.query(".accordion_title", dom_frag)[0];

当然,这有点 hack...但是如果您不能保证响应将以单个节点结束,那么您需要这样做。