基于问题 JQuery 代码在 IE 中无法工作,在 HTML 文档中使用 text/javascript,以便 Internet Explorer 能够理解它。
text/javascript
但是我想知道,你什么时候会使用 application/javascript,更重要的是,你为什么要使用它而不是 text/javascript?
application/javascript
因为 .js-文件不是用户想要读取的内容,而是应该被执行的内容。
.js
Javascript 的 MIME 类型的问题在于多年来一直没有一个标准。现在我们已经得到了 应用程序/javascript作为一个正式的 MIME 类型。
但实际上,MIME 类型并不重要,因为浏览器可以自己确定类型。这就是 HTML5规范声明不再需要 type="text/javascript"的原因。
type="text/javascript"
Application/javascript 是正确的使用类型,但是由于 IE6-8不支持这种类型,所以只能使用 text/javascript。如果您不关心有效性(不包括 HTML5) ,那么就不要指定类型。
理论上,根据 RFC 4329,application/javascript。
它应该是 application的原因与类型是可读的还是可执行的没有任何关系。这是因为存在由语言/类型本身规定的自定义字符集确定机制,而不仅仅是泛型 charset参数。text的子类型应该能够通过代理转换为另一个字符集,从而改变字符集参数。JavaScript 并非如此,因为:
application
charset
text
RFC 说用户代理应该对脚本进行 BOM 嗅探以确定类型(我不确定是否有浏览器真的这样做) ;
浏览器使用其他信息ーー包含页面的编码和 一些浏览器中的 script charset属性ーー来确定字符集。所以任何试图对资源进行代码转换的代理都会破坏其用户。(当然,在现实中,没有人会使用代码转换代理,但这正是目的所在。)
script charset
因此,文件的确切字节必须保留为 没错,这使其成为二进制 application类型,而不是技术上基于字符的 text。
出于同样的原因,官方认为 application/xml优于 text/xml: XML 有自己的带内字符集信令机制。对于 XML,每个人都忽略了 application。
application/xml
text/xml
text/javascript和 text/xml可能不是正式的正确的东西,但有什么是大家今天使用的兼容性的原因,为什么他们不是正确的事情,实际上说完全不重要。
在过去,关于这个问题有很多困惑和分歧,其他的答案对此作了一些详细的解释。
RFC9239 最终通过与实现现实保持一致来解决这种混淆。application/javascript现在正式过时了; text/javascript是唯一正确的 JavaScriptMIME 类型。