我正在尝试学习在HTML中使用框架集。所以,我和朋友开了一个小网站。 在下一页(index.html)中,我在第13行收到错误:“头部标记的杂散结束”。为什么我会收到此错误?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Metal's page</title>
<frameset cols = "20%,*" frameborder = "0">
<frame src = "pages/menu.html">
<frameset rows = "10%,*" frameborder = "0">
<frame src = "pages/title.html">
<frame name = "main" src = "index.html">
</frameset>
</frameset>
</head>
<body bgcolor = red>
<br/><br/><br/>
<p>Hello, my name is Mihai, but one of my best friend call me "Metal". This is our web page. Enjoy!</p>
<br/><br/>
</body>
</html>
网站地址:metalblog.besaba.com 谢谢!
答案 0 :(得分:1)
除非您手动告诉验证程序忽略DOCTYPE并使用HTML 4.01框架集,否则您实际上并没有收到该文档的错误消息。
如果您这样做,或者您将DOCTYPE更改为HTML 4.01框架集DOCTYPE,则会收到错误“元素结束标记&#34; HEAD&#34;由于<frameset ...>
隐式关闭head
元素,因此未打开“,因此您不能再次关闭它。
隐式关闭的原因是在Frameset document中,frameset
元素在body
之后显示而不是 head
元素元素。没有body
元素,因为帧的内容都是显示的。
以下文件证实:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Metal's page</title>
</head>
<frameset cols = "20%,*">
<frame src = "pages/menu.html">
<frameset rows = "10%,*">
<frame src = "pages/title.html">
<frame name = "main" src = "index.html">
</frameset>
</frameset>
</html>
请注意,我删除了frameborder
属性。它们在HTML 4.01(或任何其他HTML版本)中无效。如果要删除框架之间的边框,则必须使用该属性并接受该文档无效。至少在几个赛季之前没有办法移除边界,当时有些人还在使用框架,尽管上个赛季也是如此;我不认为这方面有任何改变。
答案 1 :(得分:0)
这可能是因为你已经将你的框架设置在头部标签内,而不是身体标签。所有内容都应该放在身体里。
答案 2 :(得分:0)
首先,您使用的是严格的DOCTYPE,它不允许使用框架集。更改为框架集DOCTYPE。通过validator.w3.org运行您的标记,直到您没有错误。