Исходя из вопроса, код jQuery, не работающий в IE , text/javascript
используется в документах HTML, поэтому Internet Explorer может его понять.
Но мне интересно, когда бы вы использовали application/javascript
, и что более важно, почему бы вы использовали его вместо text/javascript
?
javascript
mime-types
Марк Байенс
источник
источник
Ответы:
В теории, в соответствии с RFC 4329 ,
application/javascript
.Причина, по которой это предполагается
application
, не связана с тем, является ли тип читаемым или исполняемым. Это связано с тем, что существуют собственные механизмы определения кодировки, установленные самим языком / типом, а не просто общимcharset
параметром. Подтипtext
должен иметь возможность транскодирования через прокси в другую кодировку, изменяя параметр кодировки. Это не верно для JavaScript, потому что:а. RFC говорит, что пользовательские агенты должны делать BOM-сниффинг сценария, чтобы определить тип (хотя я не уверен, действительно ли какой-либо браузер делает это);
б. браузеры используют другую информацию - включая кодировку страницы, а в некоторых браузерах -
script charset
атрибут - для определения кодировки. Таким образом, любой прокси, который пытался перекодировать ресурс, сломал бы его пользователей. (Конечно, в действительности никто никогда не использует транскодирующие прокси в любом случае, но это было намерением.)Поэтому точные байты файла должны быть сохранены точно , что делает его двоичным
application
типом, а не технически символьнымtext
.По той же причине
application/xml
официально предпочтительнее, чемtext/xml
: XML имеет свои собственные механизмы внутрисхемной сигнализации кодировки. И всеapplication
тоже игнорируют XML.text/javascript
и,text/xml
возможно, это не официальная правильная вещь, но есть то, что все используют сегодня по соображениям совместимости, и причины, по которым они не являются правильными, практически не имеют значения.источник
application/javascript
и IE работает в режиме совместимости сIE=8
. Похоже, что встроенные скрипты не оцениваются должным образом.text/javascript
там отлично работает.X-Content-Type-Options: nosniff
чтобы браузер не интерпретировал этот тип.Server: nginx
или все, что отправляет nginx. Как будто тот, кто способен найти дыру, нуждается в явном заголовке, чтобы знать, на каком сервере вы работаете ...Проблема с MIME-типом Javascript заключается в том, что годами не было стандарта. Теперь у нас есть application / javascript как официальный тип MIME.
Но на самом деле MIME-тип вообще не имеет значения, так как браузер может определить сам тип. Вот почему спецификации HTML5 заявляют, что
type="text/javascript"
больше не требуется.источник
application
потому что.js
-файлы - это не то, что пользователь хочет прочитать, а то, что должно быть выполнено.источник
text
, илиbinary
какapplication
-ИЛИ «цель» указанного типа, как в «изображении», или «документ» и т. Д.application / javascript - это правильный тип для использования, но так как он не поддерживается IE6-8, вы застрянете с text / javascript. Если вас не интересует валидность (исключая HTML5), просто не указывайте тип.
источник
application/javascript
.