当MIME类型由服务器设置时,为什么要写<script type =“text / javascript”>?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

我的理解是,MIME类型是由Web服务器设置的。为什么我们要添加type="text/javascriptor type="text/css"属性?这不是一个无用的和被忽略的属性吗?

提问于
用户回答回答于

道格拉斯克罗克福德说:

type="text/javascript" 该属性是可选的。由于Netscape 2是所有浏览器中的默认编程语言,都是JavaScript。在XHTML中,这个属性是必需的和不必要的。在HTML中,最好不要使用它。浏览器知道该怎么做。

他还说:

W3C没有采用该language 属性,而是偏爱type 采用MIME类型的属性。不幸的是,MIME类型不规范,所以有时候 "text/javascript"还是 "application/ecmascript"或别的东西。幸运的是,所有浏览器都会选择JavaScript作为默认的编程语言,因此最好只写<script>。它是最小的,并且适用于大多数浏览器。

仅出于娱乐目的,我尝试了以下五个脚本

  <script type="application/ecmascript">alert("1");</script>
  <script type="text/javascript">alert("2");</script>
  <script type="baloney">alert("3");</script>
  <script type="">alert("4");</script>
  <script >alert("5");</script>

在Chrome上,除脚本3(type="baloney")以外的所有内容都可以使用 IE8没有运行脚本1(type="application/ecmascript")或脚本3.基于我的两个浏览器的非广泛示例,它看起来像你可以放心地忽略该type属性,但它使用它,你最好使用合法的(依赖于浏​​览器的)值。

用户回答回答于

因为至少在HTML 4.01和XHTML 1(.1)中,元素的type属性<script>是必需的。

在HTML 5中,type不再需要。

实际上,尽管您应该text/javascript在您的HTML源代码中使用,但许多服务器都会使用该文件发送该文件Content-type: application/javascript。在RFC 4329中详细了解这些MIME类型。

注意RFC 4329之间的区别,标记text/javascript为过时并推荐使用application/javascript,以及某些浏览器在<script>包含type="application/javascript"(在HTML源代码中,而不是发送的文件的HTTP Content-type头文件)的元素上出现偏差的现实。最近,在WHATWG邮件列表上讨论了这种差异(HTML 5的type默认设置为text/javascript),请阅读这些消息并附上主题。您会考虑关于RFC 4329吗?

扫码关注云+社区