Когда использовать JavaScript/MIME-тип приложения /javascript вместо text/javascript?

Исходя из вопроса jQuery-код не работает в IE, text/javascript используется в документах HTML, поэтому Internet Explorer может его понять.

Но мне интересно, когда бы вы использовали application/javascript, и что более важно, почему вы бы использовали его вместо text/javascript?

Ответ 1

В теории, согласно RFC 4329, application/javascript.

Причина, по которой она должна быть application, не имеет никакого отношения к тому, является ли тип читаемым или исполняемым. Это связано с тем, что существуют специальные механизмы определения набора символов, установленные самим языком/типом, а не только общим параметром charset. Подтип text должен быть перекодирован прокси-сервером в другую кодировку, изменяя параметр charset. Это не относится к JavaScript, потому что:

а. RFC говорит, что пользовательские агенты должны выполнять BOM-sniffing на script, чтобы определить тип (я не уверен, действительно ли какие-либо браузеры делают это);

б. браузеры используют другую информацию - включение кодировки страницы и в некоторых браузерах атрибут script charset - для определения кодировки. Таким образом, любой прокси-сервер, который пытался перекодировать ресурс, нарушил бы его пользователей. (Конечно, в действительности никто никогда не использует транскодирующие прокси-серверы, но это было целью.)

Следовательно, точные байты файла должны быть сохранены точно, что делает его двоичным application, а не технически основанным на символе text.

По той же причине application/xml официально предпочтительнее text/xml: XML имеет свои собственные механизмы сигнализации кодировки в диапазоне. И все игнорируют application для XML.

text/javascript и text/xml могут быть не официальными Right Thing, но есть все, что сегодня использует сегодня по соображениям совместимости, и причины, по которым они не соответствуют действительности, практически не имеют значения.

Ответ 2

Проблема с MIME-типом Javascript заключается в том, что в течение многих лет не было стандарта. Теперь у нас есть application/javascript как официальный MIME-тип.

Но на самом деле тип MIME вообще не имеет значения, поскольку браузер может определить сам тип. Поэтому спецификации HTML5 указывают, что type="text/javascript" больше не требуется.

Ответ 3

application потому что .js -Файлы не то, что пользователь хочет прочитать, а что-то, что должно быть выполнено.

Ответ 4

application-javascript - это правильный тип, но поскольку он не поддерживается IE6-8, вы будете застрять с текстом /javascript. Если вам не нужна достоверность (исключение HTML5), то просто не указывайте тип.