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