В чем разница между атрибутами “lang” и “type” в теге script?

StackOverflow https://stackoverflow.com/questions/112482

  •  02-07-2019
  •  | 
  •  

Вопрос

Для <script> HTML-теги, в чем техническая разница между lang=Javascript и type=text/javascript?

Обычно я использую и то, и другое, потому что всегда предполагал, что старым браузерам нужно то или другое.

Это было полезно?

Решение

В соответствии с Спецификация HTML 4.01:

Тип:Этот атрибут определяет язык сценариев содержимого элемента и переопределяет язык сценариев по умолчанию.Язык сценариев указывается как тип контента (например, "текст/javascript").Авторы должны указать значение для этого атрибута.Для этого атрибута нет значения по умолчанию.

язык:Не рекомендуется.Этот атрибут определяет язык сценариев содержимого данного элемента.Его значение является идентификатором языка, но поскольку эти идентификаторы не являются стандартными, этот атрибут устарел в пользу type .

Другие советы

<script language=""> может использоваться для обслуживания VBScript и различных версий Javascript.

Если вам не нужна конкретная версия Javascript, не используйте атрибут language, ваш код все равно будет работать в обычном режиме без него.

Даже если вам нужна конкретная версия Javascript для какой-то части кода, попробуйте проверить, существует ли функция вместо этого, с помощью проверки (typeof window.blah.feature != "undefined").

Вот пример использования атрибута language:http://bclary.com/2004/08/27/javascript-version-incompatibilities

Атрибут language устарел из-за этого слабо определенного или неопределенного поведения.

Атрибут type совершенно другой.Он сообщает браузеру, к какому mime-типу относится скрипт, и всегда должен быть указан в теге script.

язык - это старый атрибут, тип - новый.Вам пришлось бы использовать переходный (не положительный в этом отношении, но достаточно уверенный) doctype, чтобы легально использовать оба атрибута.

В OP специально было сказано "lang", а не "language".Гораздо более старым тегом "language" был бы Javascript или VBScript.

Но тот текущий и, казалось бы, действительный "lang" тег - это на самом деле то, что написанный такие языки, как английский, испанский, японский.Microsoft Visual Studio предоставляет выпадающий список значений для "lang", и все они похожи на en-us, fr, ja и т.д..для английского, американского, французского, японского и т.д...

Я думаю, что там мог бы должны быть веские причины для использования этого тега, если у вас сложная многоязычная настройка - может быть, есть система content mgmt, которая могла бы поддерживать это, а затем предоставлять соответствующие ресурсы управления файлами javascript, такие как jQuery?

Тип является более общим и относится к mime-кодировке блока сценария.Насколько я знаю, вам нужен только один, и обычно блок будет работать без атрибутов type или lag.

Я склонен использовать шрифт.

lang - это язык скрипта, а type - это MIME-тип содержимого тега script.

По сути, ни один из этих атрибутов не является необходимым.Единственная причина их использования - это проверка, и она стала недействительной в HTML5.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top