我第一次尝试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库之前。