Что лучше: <script type = «text / javascript»>… </script> или <script>… </script>


97

Что лучше или удобнее использовать:

<script type="text/javascript">...</script> 

или

<script>...</script>

7
Если вы используете javascript в качестве языка, то, конечно, лучше 1-й
Chinmayee G

Я предполагаю, что прирост производительности, который вы получите от объявления скрипта как java-скрипта, незначительный, но отличный вопрос!
The_Butcher,

10
Отличается ли «правильный» ответ, если мы находимся в Html v4 и Html v5?
Димитриос Мистриотис

Дело не в том, что лучше, а в том, когда что использовать; при использовании объявления HTML5 <!doctype html>нет необходимости использовать подсказку типа MIME type="text/javascript"для <script>тега, поскольку она применяется по умолчанию. С другой стороны (не HTML5) это желательно и рекомендуется (со ссылкой на подсказку типа MIME type="text/javascript").
недидикеке

Ответы:


138

Вам вообще нужен атрибут типа? Если вы используете HTML5, нет. В противном случае да. HTML 4.01 и XHTML 1.0 определяют typeатрибут как обязательный, в то время как HTML5 имеет его как необязательный, по умолчанию text/javascript. HTML5 сейчас широко внедрен, поэтому, если вы используете doctype HTML5, <script>...</script>это правильный и хороший выбор.

Что касается того, что должно быть в атрибуте type, то тип MIME, application/javascriptзарегистрированный в 2006 году, предназначен для замены text/javascriptи поддерживается текущими версиями всех основных браузеров (включая Internet Explorer 9). Цитата из соответствующего RFC :

Таким образом, этот документ определяет text / javascript и text / ecmascript, но отмечает их как «устаревшие». Использование экспериментальных и незарегистрированных типов носителей, перечисленных в части выше, не рекомендуется. Типы медиа,

  * application/javascript
  * application/ecmascript

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

Однако IE до версии 8 включительно не выполняет скрипт внутри <script>элемента с typeатрибутом или application/javascriptили application/ecmascript, поэтому, если вам нужно поддерживать старый IE, вы застряли с text/javascript.


3
typeАтрибут вам не «нужен» . Проверка на соответствие HTML4.01 или XHTML 1.0 - это не то, что вам больше нужно делать, и все браузеры будут поддерживать ваш тег безtext/javascript
Ян Сторм Тейлор,

9
@Ian: На момент написания спецификация HTML5 была рабочим проектом и еще не превратилась в текущий статус постоянно движущейся цели. Реализации HTML5 в браузерах значительно отстали от нынешних. Учитывая это, я думаю, что HTML5 в то время был непригоден для использования в Интернете, и мой ответ был абсолютно справедливым и всегда содержал отказ от ответственности «если вы хотите, чтобы ваш HTML был действительным» . Я согласен с тем, что с тех пор все изменилось, и этот ответ может быть изменен, но я не согласен с тем, что писать веб-страницы в HTML 4.01 теперь всегда неправильно.
Tim Down

1
+1, только что обнаружил этот вопрос от дупа. Это напоминает мне несколько сообщений в блоге Анны Ван Кестерен, в том числе о типе MIME JavaScript , где он обсуждает это. Я не могу найти его, но я был уверен, что там был пост, в котором он рекомендовал вообще не использовать, typeпотому что он работает во всех браузерах. Может, это был кто-то другой.
Энди Э

1
Просто хотел сказать «спасибо», когда пытался выяснить, почему JS-файл «application / javascript» не запускается в IE8 и ниже!
andrewtweber

как насчет: "text / javascript; version = 1.8"?
SparK

10

Оба будут работать, но стандарт xhtml требует, чтобы вы также указали type:

<script type="text/javascript">..</script> 

<!ELEMENT SCRIPT - - %Script;          -- script statements -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #REQUIRED -- content type of script language --
  src         %URI;          #IMPLIED  -- URI for an external script --
  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
  >

type = content-type [CI] Этот атрибут определяет язык сценариев содержимого элемента и переопределяет язык сценариев по умолчанию. Язык сценариев определяется как тип контента (например, «текст / javascript»). Авторы должны указать значение для этого атрибута. Для этого атрибута нет значения по умолчанию.

Замечает выделение выше.

http://www.w3.org/TR/html4/interact/scripts.html

Примечание: Начиная с HTML5 (далеко), typeатрибут не является обязательным и используется по умолчанию.


9

Вам нужно использовать, <script type="text/javascript"> </script>если вы не используете html5. В этом случае вам предлагается предпочесть <script> ... </script>(потому что атрибут type указан по умолчанию для этого значения)



3

<script type="text/javascript"></script> потому что это правильный способ и совместим со всеми браузерами


-2

В последней версии Firefox я должен использовать:

<script type="text/javascript">...</script>

В противном случае сценарий может работать некорректно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.