2014-10-29 79 views
0

我想学习在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 谢谢!

回答

1

除非您手动指示验证程序忽略DOCTYPE并使用HTML 4.01 Frameset代替,否则实际上不会收到该文档的错误消息。

如果你这样做,或者如果你改变了DOCTYPE为HTML 4.01框架集DOCTYPE,你得到错误HEAD“这是不开‘因为<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版本)中无效。如果要删除帧之间的边界,则必须使用该属性并接受文档无效。至少在几个赛季之前,没有办法移除边界,当时一些人仍在使用边框,尽管上赛季有这样的边框。我不认为这方面有任何改变。

0

这可能是因为你已经把你的框架设置在头标签而不是身体标签。所有内容都应该放在正文中。

+0

我跟着一个教程,说我需要把头框架 – 2014-10-29 17:48:53

+0

你能链接我们的教程吗? – codepuncher 2014-10-29 17:54:32

0

首先,您正在使用严格的DOCTYPE,它不允许框架集。更改为框架集DOCTYPE。通过validator.w3.org运行你的标记,直到你没有错误。

+0

更改为:<!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01 Frameset // EN”“http://www.w3.org/TR/html4/frameset.dtd”>,但同样的问题 – 2014-10-29 17:47:18

+0

请参阅我关于验证你的标记的评论。 – nunzabar 2014-10-29 17:49:26