Foundation 5可能的错误:未捕获类型错误:层必须是文档节点Foundation.min.js:8

Foundation 5 possible Bug : Uncaught TypeError: Layer must be a document node foundation.min.js:8

本文关键字:Foundation 错误 文档 js 节点 min 类型      更新时间:2023-09-26

我第一次尝试Zurb Foundation 5框架,但我得到了以下错误:"未捕获类型错误:层必须是文档节点基础。min.js:8"

这是因为我在中有这个

<script type="text/javascript" src="libs/foundation.min.js"></script>

当我把它移到身体上时,错误就消失了。

为什么?我是遗漏了javascript的某些内容,还是它是一个bug?

这是一个错误,在最近的一次提交中得到了解决,该提交被合并到v5.0.3中。只需手动包含提交,或者等到v5.0.3版本,就可以开始了。

发生了什么

Foundation现在从加载文件的任何位置立即初始化,而不是等待DOM加载。为了提高移动性能,Foundation5嵌入了一个名为FastClick的库,并在初始化时尝试将其附加到document.body,因此,如果在<body />渲染之前在<head />中执行JavaScript,FastClick会抛出该错误。

如果您正在使用Rails-Turboxlinks、Flask-Turboxlinks或任何动态替换<body />的类似库,则需要将JS保留在<head />

很可能你的html文件是这样的:

<!doctype html>
<html>
<head>
<title>Title</title>
<script src="../js/jquery.js"></script>
<script src="../js/foundation.min.js"></script>
</head>
<body>
<script>
  $(document).foundation();
</script>
</body>
</html>

你得到的错误是:

Uncaught TypeError: Layer must be a document node 
Uncaught TypeError: Object [object Object] has no method 'foundation' 

您必须将包含foundation.js的<script>行移动到身体部位,就在其他脚本标记之前。如文档中所述。这不是一个bug,而是一个脚本排序/执行和依赖关系的问题。请参阅脚本的加载和执行顺序以及其他链接的问答;A.jquery.js必须包含在foundation.js库之前。