浏览器可以理解未引用的属性值吗?
继我last question,我想知道,如果目前的浏览器可以读取属性值without any quotes,即使值包含一个斜杠,如:浏览器可以理解未引用的属性值吗?
<script src=/path/to/script.js type=text/javascript></script>
将它,而不会引起DOM解析错误和破坏工作整个文件?
只要它们在值中没有空格,它就在HTML4/5中有效。它在XHTML中是无效的,尽管它仍然在一些(所有)浏览器上正确呈现。
使用快速示例HTML文档(在答案结束时),我使用Firefox 3.5 Beta 4,Google Chrome 2和IE 7对此进行了测试。示例文档还使用HTML 4 Strict,HTML 4 Transitional,HTML 5和XHTML文档类型。所有都成功呈现。
一些其他的事情要考虑...
许多现代浏览器试图呈现标准网页兼容模式。如果您尝试使用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>
这是valid HTML 5,但不是有效的XHTML。作为最佳做法,即使您未使用XHTML,我也会始终包含引号。
即使当DOCTYPE是XHMTL,当前和未来的浏览器都可以使用吗?我知道它不理想,但我只需要知道它是否会起作用。 – 2009-06-08 09:17:15
它在spec所以你应该是安全的。
“在某些情况下,作者可以不加任何引号指定属性的值,属性值只能包含字母(az和AZ),数字(0-9),连字符(ASCII小数点45),句点(ASCII小数点46),下划线(ASCII小数点95)和冒号(ASCII小数点58),我们推荐使用引号,即使可以消除它们。
它在HTML中有效,但不被认为是最佳实践。这不是XHTML有效,所以如果这是你的目标,我会建议用引号括起来。现在这只是我的习惯。
请只要在需要的时候逃脱引号,不要让任何人通过这种眼睛流血的经历。 http://en.wikipedia.org/wiki/Escape_character – macbirdie 2009-06-08 10:21:04
如此简单。 – 2009-06-08 11:12:17