提供JavaScript文件时,最好使用application / javascript或application / x-javascript


95

整个问题都适合标题。并添加一些背景信息:我不是在问规范要求的最佳选择,而是考虑到当今部署的浏览器的混合,哪种方法最有效。

一些数据点:

  • Google使用text/javascript其主页上使用的JS。
  • Google text/javascript在Google文档上使用。
  • Google使用application/x-javascriptAjax库服务来提供JavaScript文件。
  • 雅虎application/x-javascript用来提供他们的JS。
  • 雅虎使用application/x-javascript其主页上提供的JavaScript。

4
滑稽。在示例中,您提供了第三种选择。据蒂姆说,两个大公司都错了(就标准而言),这可能仅意味着浏览器可以容忍(这里没有什么大新闻),也可能没有关系。
PhiLho

1
可能的重复数据删除技术:使用Javascript MIME类型
BERGI

Answers:


115
  • text/javascript 已过时
  • application/x-javascript 在决定移居到...时处于实验阶段
  • application/javascript 是JS的当前官方MIME类型

也就是说,浏览器通常会忽略content-type服务器发送的内容,并会特别注意该type属性(有些可能尚未识别application/javascript)。

我的建议:

  • 在服务器上使用应用程序/ JavaScript
  • 使用HTML 5并type从脚本元素中省略属性

注意:HTML规范与MIME标准相矛盾,并且正在努力将其更改回原来的标准,text/javascript因此将来可能会更改。


3
几个月前的问题恰恰相反。有人弄错了:)“凯利(Kelly)的权利,浏览器倾向于将随响应标头发送的MIME类型信任脚本标签的type属性。” stackoverflow.com/questions/189850/…–
Marco Marco

6
不好了!大型,庞大,缓慢的组织一定是正确的!规格一定是错误的!纳尔 我将继续相信规范和我在大型(慢速)公司中的经验,即使其中一家曾经雇用我。
昆汀

1
嗯,有人忘了告诉W3C text / javascript已经过时了。这似乎是默认HTML 5。:: scratches head ::也似乎(如果我对本节内容的粗略理解是正确的)用户代理应该仅作用于该type属性,因此忽略该Content-type行为将是正确的。
big_m

1
@big_m —这是因为许多浏览器无法识别,application/javascript因此指定它会导致它们忽略脚本。用户代理不应忽略Content-Type。type属性告诉他们期望什么。如果他们不支持它,那么他们就不应该去请求它。如果服务器然后说这是不同的东西,那么他们应该继续这样做,而不是HTML所说的(至少根据HTTP来说,您可能正在查看不同的规范,没有提供任何链接)。
昆汀

1
@Quentin,我指的script是链接到该元素的HTML 5部分。我对这一部分的了解与您所描述的不同。它似乎对type属性非常重视Content-Type,除了确定字符编码外,没有提到检查。我同意用户代理验证Content-Type符合预期是明智之举,但是我在HTML规范中没有发现任何需要甚至建议这样做的内容。
big_m


7

如果您选择在页面中对js使用application / javascript,则IE7和IE8将不会运行您的脚本!责怪Microsoft,但如果您希望大多数人运行您的页面,请使用text / javascript。


3
当您说“应用程序/ javascript”将不起作用时,您是说是将其设置为HTTP响应上的内容类型还是脚本标记的“ type”属性?最初的问题是关于HTTP响应的内容类型。根据其他答案,看来只有脚本标记上的“ type”属性值会在IE中产生任何影响。
杰西·哈莱特

7

它曾经是language="javacript"。然后更改为type="text/javascript"。现在是type="application/javacript"。好的,这变得愚蠢了。一些旧版本的浏览器无法识别新版本application/javascript,但仍能识别旧版本text/javascript。我计划继续使用它,否则我将浪费数小时的时间来尝试将in的每个实例更改text/javascriptapplication/javascript
现在总有一天相反。有一天,最新的浏览器可能会拒绝旧技术,以便严格遵守标准。
但是直到浏览我的网站的人们开始抱怨“自升级浏览器以来,大约50%的网站消失了”,我才没有动机更改我的网站中的代码。


7

这是该问题的2020年答案。

text/javascriptHTML标准中正确的JavaScript MIME类型,其指出:

服务器应使用text/javascriptJavaScript资源。服务器不应将其他JavaScript MIME类型用于JavaScript资源,并且不得使用非JavaScript MIME类型。

而且

[…]在本规范中用于引用JavaScript的MIME类型是text/javascript,因为这是最常用的类型,尽管它是根据RFC 4329正式被淘汰的类型。

正在努力在IETF级别的RFC中反映这一现实:https//datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/

任何声称“ text/javascript已过时”的说法都是基于RFC 4329,HTML标准和上述IETF草案(即即将发布的RFC)都在明确纠正。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.