我的理解是mime类型是由web服务器设置的。为什么要添加type="text/javascript
或type="text/css"
属性?这不是一个无用且被忽略的属性吗?
发布于 2010-04-25 06:01:43
因为,至少在HTML4.01和XHTML1(.1)中,<script>
元素的type
属性是required。
在HTML 5中,不再需要type
。
事实上,虽然您应该在HTML源中使用text/javascript
,但许多服务器都会使用Content-type: application/javascript
发送文件。阅读有关RFC 4329中这些MIME类型的更多信息。
请注意RFC4329之间的区别,RFC4329将text/javascript
标记为过时并建议使用application/javascript
,而一些浏览器对包含type="application/javascript"
(在HTML源文件中,而不是发送的文件的HTTP Content-type头)的<script>
元素感到抓狂。最近,WHATWG邮件列表上有一场关于这个差异的讨论(HTML5的type
缺省为text/javascript
),请阅读主题为Will you consider about RFC 4329?的邮件
发布于 2010-04-25 07:44:26
Boris Zbarsky (Mozilla)可能比其他任何人都更了解壁虎的内部结构,他在http://lists.w3.org/Archives/Public/public-html/2009Apr/0195.html上提供了下面重复的伪代码来描述基于壁虎的浏览器所做的事情:
if (@type not set or empty) {
if (@language not set or empty) {
// Treat as default script language; what this is depends on the
// content-script-type HTTP header or equivalent META tag
} else {
if (@language is one of "javascript", "livescript", "mocha",
"javascript1.0", "javascript1.1",
"javascript1.2", "javascript1.3",
"javascript1.4", "javascript1.5",
"javascript1.6", "javascript1.7",
"javascript1.8") {
// Treat as javascript
} else {
// Treat as unknown script language; do not execute
}
}
} else {
if (@type is one of "text/javascript", "text/ecmascript",
"application/javascript",
"application/ecmascript",
"application/x-javascript") {
// Treat as javascript
} else {
// Treat as specified (e.g. if pyxpcom is installed and
// python script is allowed in this context and the type
// is one that the python runtime claims to handle, use that).
// If we don't have a runtime for this type, do not execute.
}
}
发布于 2010-04-25 07:19:57
它允许浏览器在请求脚本或样式表之前确定它们是否可以处理脚本/样式语言(或者,在嵌入式脚本/样式的情况下,确定正在使用哪种语言)。
如果浏览器领域的语言之间存在更多的竞争,这将变得更加重要,但VBScript从未超越IE,PerlScript也从未超越IE特定的插件,而JSSS一开始就相当垃圾。
HTML5草案使该属性成为可选的。
https://stackoverflow.com/questions/2706290
复制相似问题