Есть ли случай, когда application/javascript (как MIME-тип для Javascript) не будет работать?

Вопрос в том, что text / javascript работает по всем направлениям, но application/[x-]javascript верен. Есть ли причина не использовать текст /javascript?

Фон:

Я обнаружил интересный случай, когда Chrome откажется выполнять Javascript, переданный в виде application/x-javascript или application / javascript, переданный в виде URL-адреса в кодировке utf-8 (например, 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 не дало однозначного ответа.

1 ответ

Во-первых, обратите внимание, что я отредактировал вопрос после того, как понял, что Chrome не работает для application/javascript и x-javascript.

Похоже, что это простая ошибка в Chrome. Он не отказывается выполнять "закодированный" javascript utf-8, вместо этого он сворачивает пробелы, приводя, например, к неверному определению именованной функции, например, функция foo(){} становится functionfoo(){}. Этого не происходит для текстового / javascript или base64-кодированного Uris.

Таким образом, ответ заключается в использовании текста / JavaScript.

В качестве отступления: кажется немного ценным настаивать на устаревании текста / JavaScript при сохранении текста / CSS.

Другие вопросы по тегам