Должен ли javascript быть в тегах head?


Я считаю, что javascript может быть где угодно (почти), но я почти всегда вижу его между <head></head>. Я использую jquery и хотел бы знать, если он должен быть в голове теги по какой-то причине или если сломает что-то, если я переместить его. Спасибо.

EDIT: почему это почти всегда в головных тегах?

11 60

11 ответов:

JavaScript выполняется везде, где он находится в документе. Если вы разместите встроенный JavaScript в теле, он будет выполнен, когда браузер придет к нему. Если вы используете $(document).ready(...) выполнить вещи, то позиционирование не важно. В противном случае вы можете найти угловые случаи, когда это имеет значение. В общем, это не важно. Скрипты заканчиваются в head тег в основном из традиции.

нет, он может быть где угодно. На самом деле, это иногда хорошая идея, чтобы положить его в нижней части документа. Для объяснения, почему, см. http://developer.yahoo.com/performance/rules.html#js_bottom.

В принципе, браузеры останавливают рендеринг страницы до .js файлы полностью загружаются и обрабатываются. Поскольку они отображают страницу постепенно по мере поступления HTML, более поздний .js файлы ссылаются, тем лучше пользовательский опыт будет.

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

все останавливается, когда браузер читает тег сценария, пока он не обработал его. Поэтому ваша страница будет отображаться быстрее, если вы двигаетесь теги script вниз как можно дальше, в идеале - непосредственно перед тегом body. Очевидно, что общее время загрузки будет таким же.

вам нужно будет убедиться, что вы на самом деле не вызываете никаких функций jQuery, пока jQuery не будет включен, конечно.

и именно поэтому JavaScript находится в таком беспорядке и почему старые сообщения StackOverflow-это худший кошмар для разработчиков. JS меняется так быстро в эти дни с новой структурой, выходящей каждую неделю, и каждый из них утверждается как пчелы колени его сторонниками.

Гумбо прав, говоря, что тег сценария может ссылаться на любой встроенный элемент, но выбор для загрузки внешнего JS-файла или включения JS-кода в тег-это решение, принятое индивидуально в каждом случае. Да браузер будет остановите загрузку JS, когда он анализирует, и поэтому вам нужно рассмотреть, как это повлияет на скорость загрузки страницы и функциональность. Текущий или по состоянию на год назад, середина 2015 года (имейте в виду, что popualar ответ был в июле 2009 года, и большинство разработчиков никогда не будут читать это, поскольку они смотрят на ответ № 1 и двигаются дальше!!!) является ли то, что данный мобильный приоритет скорости загрузки страницы требует ограничения на два запроса для мачты мобильного/сотового телефона, которая под 3G дает вам полезную нагрузку 28k (2x 14kb(yes)), вам нужно рассмотреть (как Google называет его) "paint to screen" 28k, и это должно предоставить пользователю достаточно содержимого страницы / интерактивности, чтобы убедиться, что они находятся на правильной странице или на правильном пути, в этом 28k. так что jQuery minified в настоящее время составляет 87,6 lkb, просто не собирается резать горчицу!

вот почему большинство мобильных загрузки страницы в настоящее время сидеть в течение нескольких секунд, прежде чем загружать что-либо, и это 4G! Не делай этого. Скорость страницы-это король, и пользователи нажимают кнопку "назад" перед загрузкой файла JQuery. Под 3G+ a 28k полезная нагрузка будет загружаться в

поэтому структурируйте свою страницу не там, где 7-летний пост на SO говорит (это не так просто устарело), а там, где каждый кусок кода необходим и убедитесь, что пользователь может использовать самые важные аспекты страницы, прежде чем пытаться загрузить 6 JS фреймворков для реализации умных parrallel прокрутки и обширной привязки данных для вашей страницы контактов.

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

подумайте, прежде чем код!

нет. SCRIPT не только классифицируется как головы.разное элемент, но и как специальные элемент и при этом везде разрешено где inline элементов разрешено. Так что вы можете поставить SCRIPT везде, где разрешены встроенные элементы:

<p>foo <script>document.write("bar")</script></p>

в самом деле некоторые рекомендуют ставить SCRIPT элементы в конце BODY непосредственно перед закрывающим тегом, чтобы весь документ анализируется перед загрузкой JavaScript. То есть, чтобы предотвратить блокировку параллельных загрузок JavaScript.

на самом деле, по причинам производительности, вы почти всегда хотите поместить теги script в нижней части страницы. Зачем? Вы хотите, чтобы ваша структура страницы и ваш CSS загружались сначала, чтобы пользователь сразу видел страницу. Затем вы хотите, чтобы весь ваш поведенческий код загружался последним. YSlow-это хорошее расширение firefox, которое покажет вам оценку производительности. Один из элементов, на котором он оценивает вас, - это наличие javascript внизу, а не сверху.

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

  1. потому что вы не хотите, чтобы JavaScript смешивался с HTML - контентом с поведением. Желательно, чтобы он был в отдельном файле.

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

Он может пойти в head или body тег. Просто имейте в виду, что он будет выполняться всякий раз, когда читается и не обязательно, когда документ закончит загрузку. Взгляните здесь.

в некоторых случаях, да скрипт может не работать если его в неправильном месте. Некоторые JavaScript должны выполняться после определенного элемента HTML, другие должны быть именно там, где вы хотите, чтобы ваш вывод скрипта отображался, другие должны быть в голове документа. Это действительно зависит от того, как написан код. Если вы не уверены,вы должны выполнить свой код в окне.загрузить или DOMready:http://www.javascriptkit.com/dhtmltutors/domready.shtml