Вам нужен текст /javascript, указанный в тэгах <script>?

Я где-то читал, что вам больше не нужны вещи типа type="text/javascript" и странные CDATA и <!-- вещи в тэгах script. Итак, вместо:

<script type="text/javascript">
//<![CDATA[
<!--

    //your script here

-->
//]]>
</script>

Вы бы просто сделали:

<script>
    //your script here
</script>

Я не помню, где я это читал. Я думаю, что это был от инженера Google или Yahoo, и они специально упомянули, какие браузеры требовали этих архаичных конструкций и почему. Кто-нибудь знает, что за сообщение в блоге/статья об этом говорили, или у вас есть хороший ресурс, говорящий об этом?

Ответ 1

См. запись в Crockford в теге <script>, наиболее заметно:

Не используйте скрипт <!-- //--> со скриптами. Он предназначен для предотвращения появления сценариев в виде текста в браузерах первого поколения Netscape 1 и Mosaic. Это не было необходимо много лет. <!-- //--> должен сигнализировать комментарий HTML. Комментарии должны игнорироваться, а не компилироваться и выполняться. Кроме того, комментарии HTML не включают --, поэтому script, который имеет декремент, имеет ошибку HTML.

...

type="text/javascript"

Этот атрибут является необязательным. Поскольку Netscape 2, языком программирования по умолчанию во всех браузерах был JavaScript. В XHTML этот атрибут необходим и не нужен. В HTML лучше оставить его. Браузер знает, что делать.

Ответ 2

Это рекомендация Crockford. Я знаю, что видел, как это повторяется в другом месте (возможно, ppk). Спецификация HTML5 не требует этого.

Как ни странно, для использования атрибута "type" для отметки блоков <script>, которые вы не, хотите оценить:

<script type='text/html-template'>
  <div> this is a template </div>
</script>

Предоставляя странный не-JavaScript-тип, вы получаете способ набить исходный текст на страницу для использования другим кодом JavaScript (который предположительно находится в блоке script, который может быть оценен ).

Ответ 3

HTML5 не нуждается в type="text/javascript" (он по умолчанию).

CDATA используется только для страниц XHTML, если script имеет любые символы HTML (например, '<' и ' > ') в нем.

<!-- должен быть необходим только для OLD-браузеров.

Ответ 4

Атрибут type идентифицирует язык сценариев кода, встроенный в элемент script или ссылающийся через элементы атрибут src. Это указано как тип MIME; примеры поддерживаемых типов MIME включают текст /javascript, text/ecmascript, application/javascript и application/ecmascript.

Согласно HTML 4.01 Спецификация

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

Но в HTML5 text/javascript является типом по умолчанию, поэтому вы можете опустить

Атрибут типа дает язык script или формат данные. Если атрибут присутствует, его значение должно быть допустимым MIME тип. Параметр charset не указывается. Значение по умолчанию, которое используется, если атрибут отсутствует, является "text/javascript".

Ответ 5

вы можете подумать о этой статье здесь, поскольку зависимость заключается в том, что сценарии по умолчанию используются для текста /javascript в HTML5 автоматически, в то время как браузеры, отличные от HTML5 по-прежнему ожидайте, что вы определите тип специально spec-wise, хотя они почти всегда будут угадывать текст /javascript в любом случае.

Ответ 6

до браузера, чтобы интерпретировать блок script правильно на основе заголовков, я считаю, а не атрибута type. Поэтому, чтобы ответить на ваш вопрос, он не требуется для современных браузеров (я говорю IE7 +, FF, Webkit). Если вы поддерживаете более старые браузеры, чем это... Мне жаль вас =)

Ответ 7

Хорошо, я искушаюсь сказать, что никто больше не использует text/javascript, и что даже инструменты для минимизации, вероятно, удалят его... Действительно, Документация SDK для Facebook указывает только <script>.

Однако, Документация Google SDK по-прежнему имеет text/javascript.

Документация SDK Amazon имеет text/javascript.

Документация по Linkedin API имеет text/javascript.

Instagram все еще использует text/javascript.

Ответ 8

Ну, я продолжаю видеть больше примеров без текста /javascript, но по какой-то причине мои скрипты не будут работать в FF, когда я это сделаю. Я бы рекомендовал сохранить декларацию text/javascript. Тег CDATA предотвращает отображение javascript в виде обычного текста на вашем веб-сайте, если в вашем браузере отключен JavaScript. Лично я не использую эти теги, больше не думаю, что там есть свободные пользователи без них, и если они там, они могут захотеть вырастить мозги: P

Ответ 9

type="text/javascript": требуется в HTML 4 и XHTML, но необязательно в HTML5.

CDATA: требуется в XHTML.

<!--: используется для скрытия JavaScript из очень старых браузеров. Например: Netscape 1 и Internet Explorer 2, ни один из которых не использует больше.