我第一次尝试Zurb Foundation 5框架而且我收到了这个错误:“Uncaught TypeError:Layer必须是文档节点foundation.min.js:8”
这是因为我在:
中有这个
<script type="text/javascript" src="libs/foundation.min.js"></script>
当我把它移到身体上时,错误就消失了。
为什么呢?我错过了一些关于javascript的内容还是一个bug?
答案 0 :(得分:9)
这是一个错误已解决in a recent commit merged into what will be v5.0.3。只需手动包含该提交或等到v5.0.3发布,你应该好好去。
正在进行什么
Foundation现在可以从加载文件的任何位置立即初始化,而不是等待DOM加载。为了提高移动性能,Foundation 5嵌入了一个名为FastClick
的库,并尝试在初始化时将其附加到document.body
,因此如果您在<head />
之前<body />
执行JavaScript已渲染,FastClick抛出该错误。
如果您使用Rails Turbolinks,Flask Turbolinks或任何动态替换<body />
的类似库,则需要将JS保留在<head />
< / p>
答案 1 :(得分:2)
最有可能你的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,但它是脚本排序/执行和依赖的问题。请参阅load and execute order of scripts和其他相关问答。并且必须在foundation.js库之前包含jquery.js。