没有任何html或body标签的html文件,但在所有浏览器中只有div渲染

时间:2013-01-05 19:32:36

标签: html

当我看到如果我将以下内容保存到具有'htm'扩展名的文件中时,我吃了一惊,然后它呈现并显示JavaScript警报。

我的印象是浏览器肯定需要html,而身体标签至少要呈现一个html文件。

浏览器执行此操作是否正常,是否会导致任何与安全相关的问题?

       <table width="100%" height="100%" border="1">
            <tr>
                <td  style="margin:0 auto;">
                    <div style='color:red;height:100%;width:100%;margin:0 auto;text-align:center;border-width:1px;border-color:blue;border-style:solid;vertical-align:middle' id="div1">
                        Does this render in a Browser, since there are html, head and body tags?
                        <div id='div2' style='height"100%;width:100%;margin:0 auto;text-align:center;border-width:1px;border-color:green;border-style:solid;'>Hello! Will the browser show this?</div>
                    </div>
                </td>
            </tr>
        </table>
      <script type='text/javascript'>    alert('showing without tags');</script>

2 个答案:

答案 0 :(得分:2)

浏览器根据文件扩展名(对于本地文件)或Content-Type HTTP标头(对于通过HTTP访问的文件)确定文档是否为HTML,而不是基于与文档中的内容有关的任何内容(某些版本的Internet Explorer会触发非文本/ html文档以查看它们是否为HTML格式。

一旦浏览器确定某个文档是HTML,它就会尽可能地呈现它,尽管它可能会使它无效。为了应对糟糕的文档和编写的错误文档而编写的浏览器组合,因为浏览器可以应对它们,这导致了所有浏览器中日益强大的错误恢复例程的螺旋式上升。

缺少的htmlbody标记不会导致它无效,但这些元素的开始和结束标记在所有HTML版本中都是可选的(尽管不是XHTML没有可选标签)。如果给出合适的Doctype和标题,该文档将是有效的。

向浏览器提供无效HTML没有内在的安全问题。您必须要小心允许将哪些用户生成的内容添加到您的网站(但即使浏览器只接受有效文档,您也必须小心),有时不好的HTML可以利用浏览器中的安全漏洞(但浏览器供应商有责任解决这些问题。)

答案 1 :(得分:1)

当面对此类HTML(没有doctype)时,大多数浏览器会进入quirks mode

他们如何解释HTML并在此时呈现它并不是标准化的,而是特定于实现的。

这也意味着您不能依赖于将来版本中保持不变的行为。

简而言之 - 今天不要依赖于浏览器以任何特定方式呈现此类HTML - 它可能会发生变化。

至于您的安全问题 - 我并不确定这与安全性有什么关系(除了正常的浏览器安全问题)。