2

问题是 text/javascript 全面工作,但 application/[x-]javascript 是正确的。有什么理由不使用 text/javascript 吗?

背景:

我发现了一个有趣的极端情况,Chrome 将拒绝执行作为 application/x-javascript 传递的 Javascript 或作为 utf-8 编码数据 url 传递的 application/javascript(所以 data:application/x-javascript;charset=utf-8 ,...)

具体来说,Chrome 允许:

data:text/javascript; charset=utf-8,....
data:application/javascript; charset=utf-8;base64,....
data:application/x-javascript; charset=utf-8;base64,.....

但是会爆炸:

data:application/x-javascript; charset=utf-8,.....
data:application/javascript; charset=utf-8,.....

根据谷歌搜索,似乎RFC 4329将 application/javascript 规定为标准,并且在这种情况下有效,但(现已弃用)text/javascript 也是如此。

追查 RFC2397、RFC2045、RFC2046 并没有给出明确的答案。

4

1 回答 1

1

首先,请注意,我在意识到 Chrome 因应用程序/javascript 以及 x-javascript 而损坏后编辑了该问题。

看起来这是 Chrome 中的一个直接错误。它不会拒绝执行 utf-8 “编码” javascript,而是折叠空格,从而导致例如命名函数的任何定义变得不正确,例如 function foo(){} 变为 functionfoo(){}。对于 text/javascript 或 base64 编码的 uri,这不会发生。

所以,答案是使用 text/javascript。

顺便说一句:在保留 text/css 的同时坚持弃用 text/javascript 似乎有点珍贵。

于 2016-06-20T17:33:29.243 回答