当我看到如果我将以下内容保存到具有'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>
答案 0 :(得分:2)
浏览器根据文件扩展名(对于本地文件)或Content-Type HTTP标头(对于通过HTTP访问的文件)确定文档是否为HTML,而不是基于与文档中的内容有关的任何内容(某些版本的Internet Explorer会触发非文本/ html文档以查看它们是否为HTML格式。
一旦浏览器确定某个文档是HTML,它就会尽可能地呈现它,尽管它可能会使它无效。为了应对糟糕的文档和编写的错误文档而编写的浏览器组合,因为浏览器可以应对它们,这导致了所有浏览器中日益强大的错误恢复例程的螺旋式上升。
缺少的html
和body
标记不会导致它无效,但这些元素的开始和结束标记在所有HTML版本中都是可选的(尽管不是XHTML没有可选标签)。如果给出合适的Doctype和标题,该文档将是有效的。
向浏览器提供无效HTML没有内在的安全问题。您必须要小心允许将哪些用户生成的内容添加到您的网站(但即使浏览器只接受有效文档,您也必须小心),有时不好的HTML可以利用浏览器中的安全漏洞(但浏览器供应商有责任解决这些问题。)
答案 1 :(得分:1)