何时使用JavaScript MIME类型的应用程序/javascript而不是text/javascript?

2022-08-30 02:21:35

基于这个问题,jQuery代码在IE中不起作用,用于HTML文档中,以便Internet Explorer可以理解它。text/javascript

但是我想知道,你什么时候会使用它,更重要的是,你为什么要使用它而不是?application/javascripttext/javascript


答案 1

理论上,根据 RFC 4329, .application/javascript

它应该是的原因与该类型是可读的还是可执行的无关。这是因为语言/类型本身制定了自定义字符集确定机制,而不仅仅是泛型参数。子类型 应能够由代理转码为另一个字符集,从而更改字符集参数。JavaScript 并非如此,因为:applicationcharsettext

a. RFC说用户代理应该在脚本上进行BOM嗅探以确定类型(我不确定是否有任何浏览器实际上这样做了);

b. 浏览器使用其他信息(包含页面的编码,在某些浏览器中使用属性)来确定字符集。因此,任何尝试对资源进行转码的代理都会破坏其用户。(当然,实际上没有人使用过转码代理,但这就是意图。script charset

因此,必须精确地保留文件的确切字节,这使其成为二进制类型,而不是技术上基于字符的 。applicationtext

出于同样的原因,它被正式优先于:XML有自己的带内字符集信号机制。而且每个人都忽略了 XML。application/xmltext/xmlapplication

text/javascript并且可能不是官方的正确的东西,但是出于兼容性原因,今天每个人都在使用的东西,而它们不是正确的东西的原因实际上完全不重要。text/xml


答案 2

Javascript的MIME类型的问题在于,多年来一直没有一个标准。现在我们已经有了应用程序/javascript作为官方的MIME类型。

但实际上,MIME类型根本不重要,因为浏览器可以确定类型本身。这就是为什么HTML5规范声明不再需要的原因。type="text/javascript"