基于jQuery code not working in IE 的问题,text/javascript
用于 HTML 文档以便 Internet Explorer 可以理解它。
但我想知道,您什么时候会使用application/javascript
,更重要的是,为什么要使用它而不是text/javascript
?
基于jQuery code not working in IE 的问题,text/javascript
用于 HTML 文档以便 Internet Explorer 可以理解它。
但我想知道,您什么时候会使用application/javascript
,更重要的是,为什么要使用它而不是text/javascript
?
从理论上讲,根据RFC 4329,application/javascript
。
它应该application
是的原因与类型是否可读或可执行无关。这是因为语言/类型本身规定了自定义字符集确定机制,而不仅仅是通用charset
参数。的子类型text
应该能够被代理转码为另一个字符集,更改字符集参数。这不适用于 JavaScript,因为:
一个。RFC 说用户代理应该对脚本进行 BOM 嗅探以确定类型(我不确定是否有任何浏览器确实这样做了);
湾 浏览器使用其他信息——包括页面的编码和在某些浏览器中的script charset
属性——来确定字符集。因此,任何试图对资源进行转码的代理都会破坏其用户。(当然,实际上无论如何都没有人使用转码代理,但这就是意图。)
因此,必须准确地保留文件的确切字节,这使其成为二进制application
类型,而不是技术上基于字符的text
。
出于同样的原因,application/xml
官方更喜欢text/xml
:XML 有自己的带内字符集信号机制。每个人也忽略application
了 XML。
text/javascript
并且text/xml
可能不是官方正确的东西,但是出于兼容性原因,今天每个人都使用什么,而为什么它们不是正确的东西的原因实际上完全不重要。
Javascript 的 MIME 类型的问题是多年来一直没有标准。现在我们已经将application/javascript作为官方 MIME 类型。
但实际上,MIME 类型根本无关紧要,因为浏览器可以自行确定类型。这就是 HTML5 规范声明type="text/javascript"
不再需要 的原因。
application
因为.js
-Files 不是用户想要阅读的东西,而是应该被执行的东西。
application/javascript 是可以使用的正确类型,但由于 IE6-8 不支持它,因此您将被 text/javascript 困住。如果您不关心有效性(HTML5 除外),则不要指定类型。