浏览器可以理解不带引号的属性值吗?

时间:2009-06-08 09:07:40

标签: javascript html tags

除了last question之外,我想知道当前浏览器是否可以读取属性值without any quotes,即使该值包含斜杠,例如:

 <script src=/path/to/script.js type=text/javascript></script>

它是否可以在不导致DOM解析错误和破坏整个文档的情况下工作?

4 个答案:

答案 0 :(得分:9)

它是valid HTML 5,但不是有效的XHTML。作为最佳实践,即使您没有使用XHTML,我也会始终包含引号。

答案 1 :(得分:3)

它位于spec,所以你应该安全:

“在某些情况下,作者可以指定没有任何引号的属性值。属性值可能只包含字母(az和AZ),数字(0-9),连字符(ASCII十进制45),句点( ASCII十进制46),下划线(ASCII十进制95)和冒号(ASCII十进制58)。我们建议使用引号,即使可以消除它们。“

答案 2 :(得分:1)

只要它们在值中没有空格,它在HTML4 / 5中有效。它在XHTML中无效,尽管它仍在某些(所有?)浏览器上正确呈现。

使用快速示例HTML文档(在答案结束时),我使用Firefox 3.5 Beta 4,Google Chrome 2和IE 7对此进行了测试。示例文档也使用HTML 4 Strict,HTML 4 Transitional,HTML 5进行了测试和XHTML doc类型。一切都成功了。

要考虑的其他一些事情......

许多现代浏览器尝试以符合标准的模式呈现页面。如果您尝试使用XHTML,并且使用不带引号的值,则浏览器将恢复为怪异模式,可能会影响其他符合标准的文档的呈现。随着浏览器越来越符合标准,未来的规范可能会弃用不带引号的值。

此外,在某些Web框架中,应用程序可能在提供模板之前解析模板。同样,如果这些解析器期望有效的XHTML,这种类型的东西可能会导致失败。

只要你坚持使用HTML而不是XHTML,你应该没有引号,但不能保证XHTML浏览器会对浏览器产生什么影响。添加引号似乎成本很低,并且使您的代码通常与未来的标准保持一致。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>No Quotes Test</title>
</head>
<body>
<input type="text" value="with/quotes and spaces" ></input>
<input type=text value=no/quotes and spaces ></input>
<input type=text value=no/quotes_no_spaces ></input>
</body>
</html>

答案 3 :(得分:0)

它在HTML中有效,但不被视为最佳做法。它不是XHTML有效的,所以如果这是你的目标,我建议用引号括起来。现在这只是我的习惯。