Есть ли случай, когда 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.