首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当mime类型由服务器设置时,为什么还要编写<script type="text/javascript">?

当mime类型由服务器设置时,为什么还要编写<script type="text/javascript">?
EN

Stack Overflow用户
提问于 2010-04-25 05:45:39
回答 3查看 107.5K关注 0票数 71

我的理解是mime类型是由web服务器设置的。为什么要添加type="text/javascripttype="text/css"属性?这不是一个无用且被忽略的属性吗?

EN

回答 3

Stack Overflow用户

发布于 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?的邮件

票数 29
EN

Stack Overflow用户

发布于 2010-04-25 07:44:26

Boris Zbarsky (Mozilla)可能比其他任何人都更了解壁虎的内部结构,他在http://lists.w3.org/Archives/Public/public-html/2009Apr/0195.html上提供了下面重复的伪代码来描述基于壁虎的浏览器所做的事情:

代码语言:javascript
复制
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.
   }
}
票数 13
EN

Stack Overflow用户

发布于 2010-04-25 07:19:57

它允许浏览器在请求脚本或样式表之前确定它们是否可以处理脚本/样式语言(或者,在嵌入式脚本/样式的情况下,确定正在使用哪种语言)。

如果浏览器领域的语言之间存在更多的竞争,这将变得更加重要,但VBScript从未超越IE,PerlScript也从未超越IE特定的插件,而JSSS一开始就相当垃圾。

HTML5草案使该属性成为可选的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2706290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档