"text/javascript"和"application/javascript"有什么区别?

44

4
当提供 JavaScript 文件时,使用 application/javascript 还是 text/javascript 更好?在现代浏览器中,两者都可以正常工作。但根据 RFC 4329,推荐使用 application/javascript。这是因为 text/javascript 已经过时并可能在未来被废弃。 - stecb
2个回答

63

text/javascript是在Web还很年轻,人们还没有深入思考的时候引入的。

随后,人们深入思考并决定text/*应该保留用于设计成易于阅读的内容(这就是为什么有些XML是text/xml而其他XML是application/xml)。JavaScript不易于阅读,因此text/javascript被弃用,application/javascript被引入来替代它。

多年以后,一些浏览器仍然没有跟上步伐。

您可以配置服务器始终在HTTP标头中提供application/javascript。不支持它的浏览器也不会注意实际的内容类型。

目前,在编写HTML 4或XHTML 1时,出于向后兼容性的考量,请在type属性中指定text/javascript。如果您正在编写HTML 5,则省略type属性(因为现在是可选的)。


3
您可以通过按照我的回答所说的方法来使其兼容。 - Quentin
这是针对服务器特定的问题,可能需要在Server Fault上提问,而不是Stack Overflow(尽管从手册中设置MIME/Content类型应该相对容易弄清楚)。 - Quentin
@Thayne — 在这个上下文中,“人类可读”意味着“您可以忽略标签并将其视为英语(或法语或其他语言)”。它并不意味着“如果您理解编程语言,则可以在头脑中解释文本”。 - Quentin
1
为什么CSS被认为是“人类可读的”,而JavaScript不是?据我所知,我从未见过application/css,只有text/css - Donald Duck

9
HTML 4.01 (1999)规范建议使用MIME类型为text/javascript (http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html#h-18.2.2.2)。
然而,RFC 4329 (2006)现在推荐使用application/javascript
历史上似乎很多人使用text/javascript,因为它是浏览器最可能支持的类型,所以这也是HTML规范中建议使用的类型。理想情况下,您应该使用application/javascript
实际上,您可能需要使用text/javascript来确保与不太符合标准的浏览器兼容。

这只是一个例子(而不是建议),并且早于IANA注册的MIME类型更改为application/javascript。 - Quentin
HTML 4.01。看到编辑了!但是没错,推荐不是正确的词(更像是建议或暗示)。但我同意,这种暗示有点过时了。 - jsalonen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接