Що краще: <script type = “text / javascript”> ... </script> або <script> ... </script>


97

Що краще або зручніше використовувати:

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

або

<script>...</script>

7
Якщо ви використовуєте javascript як мову, тоді, звичайно, краще
перший

Я здогадуюсь, що приріст продуктивності, який ви отримуєте від оголошення сценарію як Java-сценарію, є незначним, але чудовим питанням!
The_Butcher

10
Чи відрізняється "правильна" відповідь, якщо ми знаходимось у форматі Html v4 та Html v5?
Dimitrios Mistriotis

Справа не в тому, який з них краще, а в тому, коли що використовувати; при використанні декларації HTML5 <!doctype html>немає необхідності використовувати підказку типу MIME type="text/javascript"для <script>тегу, оскільки це застосовується за замовчуванням. З іншого боку (не HTML5), це доцільно та рекомендується (з посиланням на підказку типу MIME type="text/javascript").
nyedidikeke

Відповіді:


137

Вам взагалі потрібен атрибут type? Якщо ви використовуєте HTML5, ні. Інакше так. HTML 4.01 та XHTML 1.0 визначають typeатрибут за необхідності, тоді як HTML5 має його як необов’язковий, за замовчуванням text/javascript. Зараз HTML5 широко впроваджений, тому, якщо ви використовуєте докттип HTML5, <script>...</script>це дійсний і хороший вибір.

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

Таким чином, цей документ визначає текст / 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
Ian Storm Taylor

9
@Ian: На момент написання статті специфікація HTML5 була робочим проектом і ще не перетворилася на свій поточний статус цілі, що постійно рухається. Впровадження HTML5 у браузері значно відстало від того, що є зараз. Враховуючи це, я вважаю, що HTML5 на той час був непридатний для використання в загальній мережі, і моя відповідь була абсолютно справедливою, і завжди містила застереження "якщо ви хочете, щоб ваш HTML був дійсним" . Я погодився б, що з тих пір справа пішла далі, і ця відповідь могла б стосуватися перегляду, але я не згоден з тим, що писати веб-сторінки в HTML 4.01 зараз завжди неправильно.
Тім Даун

1
+1, щойно виявив це питання від дурня. Це нагадує мені декілька публікацій у блозі Анни Ван Кестерен, включаючи тип MIME JavaScript , де він обговорює це. Я не можу його повністю знайти, але я був впевнений, що там був допис, де він рекомендував взагалі не використовувати, typeоскільки він працює у всіх браузерах. Можливо, це був хтось інший.
Andy E

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

як щодо: "text / javascript; версія = 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.