В этой главе мы займемся размещением сценариев в HTML-документе, чтобы иметь возможность использовать их для оперативной модификации HTML-документа. Для вставки JavaScript-кoдa в НТМL-страницу обычно используют элемент .

Первая программа

Чтобы ваша первая пpoгpaммa (или сценарий) JavaScript запустилась, ее нужно внедрить в НТМL-документ.
Сценарии внедряются в HTML-документ различными стандартными способами:

  • поместить код непосредственно в атрибут события HTML-элемента;
  • поместить код между открывающим и закрывающим тегами ;
  • поместить все ваши скрипты во внешний файл (с расширением.js), а затем связать его с документом HTML.
JavaScript в элементе script

Самый простой способ внедрения JavaScript в HTML-документ – использование тега . Теги часто помещают в элемент , и ранее этот способ считался чуть ли не обязательным. Однако в наши дни теги используются как в элементе , так и в теле веб-страниц.

Таким образом, на одной веб-странице могут располагаться сразу несколько сценариев. В какой последовательности браузер будет выполнять эти сценарии? Как правило, выполнение сценариев браузерами происходит по мере их загрузки. Браузер читает HTML-документ сверху вниз и, когда он встречает тег , рассматривает текст программы как сценарий и выполняет его. Остальной контент страницы не загружается и не отображается, пока не будет выполнен весь код в элементе .

Это обычный HTML документ

Выходим обратно в HTML

Обратите внимание: мы указали атрибут language тега , указывающий язык программирования, на котором написан сценарий. Значение атрибута language по умолчанию – JavaScript, поэтому, если вы используете скрипты на языке JavaScript, то вы можете не указывать атрибут language .

JavaScript в атрибутах событий HTML-элементов

Вышеприведенный сценарий был выполнен при открытии страницы и вывел строку: «Привет, мир!». Однако не всегда нужно, чтобы выполнение сценария начиналось сразу при открытии страницы. Чаще всего требуется, чтобы программа запускалась при определенном событии, например при нажатии какой-то кнопки.

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

Привет, мир!

Кликни меня

Внешний JavaScript

Если JavaScript-кода много – его выносят в отдельный файл, который, как правило, имеет расширение.js .

Чтобы включить в HTML-документ JavaScript-кoд из внешнего файла, нужно использовать атрибут src (source) тега . Его значением должен быть URL-aдpec файла, в котором содержится JS-код:

В этом примере указан абсолютный путь к файлу с именем script.js, содержащему скрипт (из корня сайта). Сам файл должен содержать только JavaScript-кoд, который иначе располагался бы между тегами и .

По аналогии с элементом атрибуту src элемента можно назначить полный URL-aдpec, не относящийся к домену текущей НТМL-страницы:

Чтобы подключить несколько скриптов, используйте несколько тегов:

...

Примечание: Элемент с атрибутом src не может содержать дополнительный JаvаSсriрt-код между тегами и , хотя внешний сценарий выполняется, встроенный код игнорируется.

При наличии атрибута src внутренняя часть тега script игнорируется!

Независимо от того, как JS-код включается в НТМL-документ, элементы интерпретируются браузером в том порядке, в котором они расположены в HTML-документе. Сначала интерпретируется код первого элемента , затем браузер приступает ко второму элементу и т. д.

Внешние скрипты практичны, когда один и тот же код используется во многих разных веб-страницах. Браузер скачает js-файл один раз и в дальнейшем будет брать его из своего кеша, благодаря чему один и тот же скрипт, содержащий, к примеру, библиотеку функций, может использоваться на разных страницах без полной перезагрузки с сервера. Кроме этого, благодаря внешним скриптам, упрощается сопровождение кода, поскольку вносить изменения или исправлять ошибки приходится только в одном месте.

Примечание: Во внешние файлы копируется только JavaScript-код без указания открывающего и закрывающего тегов и .

Расположение тегов

Вы уже знаете, что браузер читает HTML-документ сверху вниз и, начинает отображать страницу, показывая часть документа до тега . Встретив тег , переключается в JavaScript-режим и выполняет сценарий. Закончив выполнение, возвращается обратно в HTML-режим и отображает оставшуюся часть документа.

Это наглядно демонстрирует следующий пример. Метод alert() выводит на экран модальное окно с сообщением и приостанавливает выполнение скрипта, пока пользователь не нажмёт «ОК»:

Начало контента...

Продолжение контента

Если на странице используется много скриптов JavaScript, то могут возникнуть длительные задержки при загрузке, в течение которых пользователь видит пустое окно браузера. Поэтому считается хорошей практикой все ссылки нa javaScript-cцeнapии указывать после контента страницы перед закрывающим тегом :

Такое расположение сценариев позволяет браузеру загружать страницу быстрее, так как сначала загрузится контент страницы, а потом будет загружаться код сценария.
Для пользователей это предпочтительнее, потому что страница полностью визуализируется в браузере до обработки JavaScript-кoдa.

Отложенные и асинхронные сценарии

Как отмечалось ранее, по умолчанию файлы JavaScript-кода прерывают синтаксический анализ (парсинг) HTML-документа до тех пор, пока скрипт не будет загружен и выполнен, тем самым увеличивая промежуток времени до первой отрисовки страницы.
Возьмём пример, в котором элемент расположен где-то в середине страницы:

какой-то текст... Этот текст не будет показан, пока браузер не выполнит script.js.

В этом примере, пока пока браузер не загрузит и не выполнит script.js, он не покажет часть страницы под ним. Такое поведение браузера называется «синхронным» и может доставить проблемы, если мы загружаем несколько JavaScript-файлов на странице, так как это увеличивает время её отрисовки.

А что, если HTML-документ на самом деле не зависит от этих JS-файлов, а разработчик желает контролировать то, как внешние файлы загружаются и выполняются?

Кардинально решить проблему загрузки скриптов помогут атрибуты async и defer элемента .

Атрибут async

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

При обнаружении тега браузер не останавливает обработку HTML-документа для загрузки и выполнения скрипта, выполнение может произойти после того, как скрипт будет получен параллельно с разбором документа. Когда скрипт будет загружен – он выполнится.

Для сценариев с атрибутом async не гарантируется вы­полнение скриптов в порядке их добавления, например:

В примере второй скрипт может быть выполнен перед первым, поэтому важно, что­бы между этими сценариями не было зависимостей.

Примечание: Атрибут async используется, если нужно разрешить браузеру продолжить загрузку страницы, не дожидаясь завершения загрузки и выполнения сценария.

Атрибут defer

Атрибут defer откладывает выполнение скрипта до тех пор, пока вся HTML-страница не будет загружена полностью.

Как и при асинхронной загрузке скриптов - JS-файл может быть загружен, в то время как HTML-документ ещё грузится. Однако, даже если скрипт будет полностью загружен ещё до того, как браузер закончит обработку страницы, он не будет выполнен до тех пор, пока HTML-документ не обработается до конца.

Несмотря на то, что в приведенном примере теги включены в элемент HTML-документа, выполнение сценариев не начнется, пока браузер не дойдет до закрыва­ющего тега .

Кроме того, в отличие от async , относительный порядок выполнения скриптов с атрибутом defer будет сохранён.

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

Примечание: Атрибуты async и defer поддерживаются только для внешних файлов сценариев, т.е. работают только при наличии атрибута src .

Итоги
  • JavaScript можно добавить в HTML-документ с помощью элемента двумя способами:
    • Определить встроенный сценарий, который располагается непосредственно между парой тегов и .
    • Подключить внешний файл с JavaScript-кодом через .
  • Если JavaScript-код используется в нескольких страницах, то его лучше подключать в качестве внешнего сценария. Это существенно облегчает сопровождение и редактирование кода, а также ускорит загрузку и обработку веб-страниц – внешний сценарий загружается браузером всего один раз (в дальнейшем он будет извлекаться из кэша браузера).
  • Атрибут defer сигнализирует браузеру, что загрузку сценария можно начать немедленно, но его выполнение следует отложить до тех пор, пока весь HTML-документ будет загружен.
  • В тех случаях, когда файл скрипта содержит функции, взаимодействующие с загружаемым HTML-документом или существует зависимость от другого файла на странице необходимо, что­бы HTML-документ был полностью загружен, прежде чем скрипт будет выполнен. Как правило, такая ссылка нa javaScript-cцeнapий помещается в низ страницы перед закрывающим тегом , чтобы убедиться, что для его работы весь документ был разобран. Однако, в ситуации, когда по каким-либо причинам JS-файл должен быть размещён в другом месте документа - атрибут defer может быть полезен.
  • Атрибут defer сохраняет относительную последовательность выполнения скриптов, а async – нет.
  • Скрипт с атрибутом async выполняется асинхронно с обработкой страницы, когда скрипт будет загружен – он выполнится, даже если HTML-документ ещё не полностью готов.
  • Для JS-файлов, которые не зависят от других файлов, атрибут async будет наиболее полезен. Поскольку нам не важно, когда скрипт будет исполнен, асинхронная загрузка - наиболее подходящий вариант.
Задачи
  • Всплывающее окно

    Перед вами простой HTML-документ. Разместите в теле НТМL-страницы сценарий, выводящий всплывающее окно с надписью: "Привет, javascript!"

Последнее обновление: 1.11.2015

Еще один способ подключения кода JavaScript на веб-страницу представляет вынесение кода во внешние файлы и их подключение с помощью тега

Итак, в прошлой теме мы создали html-страницу index.html, которая находится в каталоге app. Теперь создадим в этом каталоге новый подкаталог. Назовем его js . Он будет предназначен для хранения файлов с кодом javascript. В этом подкаталоге создадим новый текстовый файл, который назовем myscript.js . Файлы с кодом javascript имеют расширение .js . То есть у нас получится следующая структура в папке app:

Откроем файл myscript.js в текстовом редакторе и определим в нем следующий код:

Var date = new Date(); // получаем текущую дату var time = date.getHours(); // получаем текущее время в часах if(time < 13) // сравниваем время с число 13 alert("Доброе утро!"); // если время меньше 13 else alert("Добрый вечер!"); // если время равно 13 и больше

Для совместимости с кодировкой страницы index.html для файла с кодом javascript также желательно устанавливать кодировку utf-8.

Здесь уже больше выражений языка javascript. Первое выражение получает текущую дату и присваивает ее переменной date . С помощью второй инструкции получаем время в часах. Дальше мы сравниваем полученное время с числом 13 и в зависимости от результатов проверки выводим первое или второе сообщение.

Теперь подключим этот файл на веб-страницу index.html:

JavaScript Первая программа на JavaScript

Чтобы подключить файл с кодом javascript на веб-страницу, применяется также тег , у которого устанавливается атрибут src . Этот атрибут указывает на путь к файлу скрипта. В нашем случае используется относительный путь. Так как веб-страница находится в одной папке с каталогом js, то в качестве пути мы можем написать js/myscript.js .

Также надо учитывать, что за открывающим тегом script должен обязательно следовать закрывающий

И после открытия файла index.html в браузере отобразится сообщение:

В отличие от определения кода javascript вынесение его во внешние файлы имеет ряд преимуществ:

    Мы можем повторно использовать один и тот же код на нескольких веб-страницах

    Внешние файлы javascript бразуер может кэшировать, за счет этого при следующем обращении к странице браузер снижает нагрузка на сервер, а браузеру надо загрузить меньший объем информации

    Код веб-страницы становится "чище". Он содержит только html-разметку, а код поведения хранится во внешних файлах. В итоге можно отделить работу по созданию кода html-страницы от написания кода javascript

Поэтому, как правило, предпочтительнее использовать код javascript во внешних файлах, а не в прямых вставках на веб-страницу с помощью элемента script.

От автора: приветствую вас, друзья. В этой статье мы с вами узнаем, как перенести наш код JavaScript во внешний файл и подключить скрипт JavaScript. Статья ориентирована на новичков, начинающих свое изучение языка JavaScript.

Итак, начнем с вопроса, а зачем вообще нужно выносить код JavaScript во внешний файл? Все просто. Представьте, что ваш скрипт занимает десятки или сотни строк кода. Или даже больше. И, конечно же, этот скрипт нам, скорее всего, потребуется на каждой странице нашего сайта. Согласитесь, будет совсем нехорошо в этом случае дублировать в каждом файле эти сотни строк кода. Да и просто наличие не HTML кода в документе HTML будет смотреться не очень правильно и не очень красиво.

Именно поэтому код JavaScript принято выносить в отдельный файл, который и подключается к страничке. Собственно, все так же, как и в случае с файлами стилей. Как же подключить скрипт JavaScript к основному файлу? Очень просто. Для этого используются уже знакомый нам тег , к которому добавляется атрибут src, точно так же, как и в случае с картинками. Ну и, как вы уже догадались, в атрибуте src указывается путь к подключаемому скрипту JavaScript.

Давайте попробуем перенести нашу программу, состоящую из одной строки кода, во внешний файл и подключим этот файл. Назовем этот файл, к примеру, scripts.js:

JavaScript. Быстрый старт

alert("Привет!");

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

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

На что стоит обратить внимание при подключении скриптов? Мы подключили скрипт в конце документа, перед закрывающим тегом body. Ранее практиковалось подключение скриптов в начале документа, в тегах head. Однако сегодня так делать не рекомендуется и скрипты рекомендуют подключать именно в конце документа. Почему так?

Давайте попробуем перенести подключения между тегами head:

Что мы видим? Ничего, кроме модального окна. Никакого контента нет. В этом и суть. Когда внешний скрипт подключается в начале документа, браузер начинает загружать его и пытается выполнить. И пока загрузка и выполнение скрипта не будут завершены, браузер не покажет часть документа, следующую после подключаемого файла.

А теперь представьте, что этот файл по каким-то причинам загружается крайне медленно. В результате пользователю придется ждать, и порой он может просто не дождаться. Именно поэтому скрипты рекомендуется подключать в конце документа, перед закрывающим тегом body.

Но что делать, если некая библиотека требует подключения именно в начале документа? Как быть в этом случае? В этом случае нас выручат атрибуты async и defer, которые позволяют браузеру загружать скрипты асинхронно, т.е. браузер начнет загружать скрипт, но при этом не остановит показ документа. Попробуем поочередно использовать данные атрибуты:

< ! -- вариант1 -- >

< ! -- вариант2 -- >

В обоих случаях мы получим одинаковый результат, скрипт подключается, не прерывая показ документа:

В чем же отличие атрибутов async и defer друг от друга? Атрибут defer сохраняет последовательность подключения внешних скриптов, т.е. первым всегда выполнится тот скрипт, который подключается выше. Это важно в том случае, когда мы подключаем несколько скриптов и какой-то из них может зависеть от другого. В этом случае основной скрипт должен подключаться раньше зависимого. Атрибут defer гарантирует соблюдение порядка. Атрибут async же обеспечит выполнение скрипта сразу после его загрузки. Поэтому такой вариант не всегда подойдет, поскольку зависимый скрипт может загрузиться раньше основного.

На этом статья подошла к концу. Если вы хотите больше узнать о JavaScript, тогда рекомендую обратить свое внимание на и отдельный . Удачи!

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

02.07.17 6.4K

JavaScript — это язык программирования, используемый в веб-разработке. Он используется для создания интерактивных веб-страниц и веб-приложений. Современные браузеры поддерживают JavaScript при помощи тега HTML script и не требуют установки дополнительных плагинов.

JavaScript необходимо загружать и запускать одновременно с разметкой. Это можно сделать как внутри HTML-документа , так и в отдельном файле, который браузер загрузит одновременно с HTML .

В этой статье мы расскажем о том, как подключить JavaScript в создаваемых веб-страницах в виде скрипта в HTML-документ и отдельного файла.

Добавление JavaScript в HTML-документ

Можно добавить JavaScript-код в HTML-документ при помощи специального тега . Он может быть помещен в раздел HTML-документа, или после него. В зависимости от того, когда необходимо загрузить JavaScript .

Как правило, JavaScript-код помещается внутри раздела , что позволяет держать его за пределами основного содержимого HTML-документа .

Но если ваш сценарий должен запускаться в определенном месте разметки страницы, тогда его размещают в .

Рассмотрим следующий HTML-документ с заголовком Today’s Date :

index.html

Today"s Date

На данный момент файл содержит разметку без тега script в HTML . Допустим, мы хотим добавить в него следующий JavaScript-код :

let d = new Date(); alert("Today"s date is " + d);

Этот код позволит веб-странице отображать сообщение с текущей датой независимо от того, когда пользователь загружает сайт.

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

index.html

Today"s Date let d = new Date(); alert("Today"s date is " + d);

Теперь при загрузке страницы с HTML script вы увидите сообщение, которое будет выглядеть так:


Можно поэкспериментировать: вставить этот код внутри или наоборот вынести за пределы тега и перезагрузить страницу. Поскольку HTML-документ достаточно прост, вы не заметите никакой разницы.

Чтобы внести изменения в структуру HTML-документа , нужно разместить код после раздела . Теперь дата будет отображаться на странице:

index.html

Today"s Date let d = new Date(); document.body.innerHTML = "Today’s date is " + d + ""

При загрузке приведенного выше HTML-документа в браузере веб-страница с script body HTML будет выглядеть следующим образом:


Небольшие сценарии могут отлично работать внутри HTML-файла . Но для больших скриптов этот подход неэффективен. Их внедрение делает разметку громоздкой и сложной для понимания. Далее мы рассмотрим, как подключить отдельный JavaScript-файл в HTML-документе . Работа с отдельным JavaScript-файлом

Чтобы разместить большие сценарии, которые будут использоваться для нескольких веб-страниц, JavaScript-код помещают в один или несколько js-файлов . Они подключаются к HTML-документу точно так же как CSS .

Преимущества использования отдельного JavaScript-файла :

  • Разделение HTML-разметки и JavaScript-кода делает их более простыми для понимания;
  • Отдельные файлы проще поддерживать;
  • Когда JavaScript-файлы кэшированы, страницы загружаются быстрее.

Для демонстрации подключения JavaScript-файла к документу без тега script в HTML создадим небольшой веб-проект. Он будет состоять из файла script.js , расположенного в каталоге js/ , файла style.css , расположенного в каталоге css/ и главной страницы index.html , расположенной в корне проекта:


Можно начать с HTML-шаблона из раздела выше:

index.html

Today’s Date

Теперь переместим JavaScript-код , который будет показывать дату в виде заголовка , в файл script.js :

script.js

let d = new Date(); document.body.innerHTML = "Today’s date is " + d + ""

Тег указывает на файл script.js, размещенный в каталоге js/ веб-проекта. Посмотрим на эту строку в контексте нашего HTML-файла, размещенную под разделом :

index.html

Today’s Date

Отредактируем файл style.css , добавив цвет фона и стиль заголовка .

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

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

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

– это настоящий язык программирования. Он работает не так как HTM или CSS и имеет свой собственный синтаксис. Кто только начинает программировать, возможно, будет трудно переключиться и начать думать как программист.

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


В процессе обучения вы будите допускать много ошибок, пропускать знаки препинания, которые в свою очередь приводить к не работающей программе. Мы с вами научимся в процессе уроков инициализировать в браузере ошибки, познакомитесь с новыми символами { }, , ; , (), !, узнаете обозначение новых слов (var , null , else if ), разберем правила пунктуации и синтаксис самого языка.

К тому же, в данных уроках познакомимся не только с , но и с jQuery – самой популярной его библиотекой, которая поможет Вам создавать сложные интерактивные элементы веб-дизайна.

Что такое программа

Когда вы добавляете код JavaScript на веб-страницу, тем самым вы пишите компьютерную программу. Конечно, она проще тех, с которыми вам приходится работать, через что читаете почту, обрабатываете фотографии, но в принципе они все схожи.

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

Создавая программу на языке JavaScript, вы должны определить шаги, необходимые для достижения цели. Как только вы поймете, что хотите реализовать и разобьете шаги на этапы, вы будете готовы к написанию программы. Другими словами, вы превращаете собственные мысли в программный код – слова и символы, заставляют браузер действовать, так как вам угодно.

Добавление JavaScript на страницу

Браузеры понимают HTML и CSS и превращают эти языки в визуальную информацию на экране. Функционал браузера понимающий HTML и CSS, называется браузерным движком. Большинство браузеров обладают компонентом под названием интерпретатор JavaScript . Это тот функционал, при помощи которого он понимает язык JS и способен выполнять шаги написанного программного кода.

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

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


Довольно часто можно встреть добавление элемента script в заглавную часть веб-страницы – раздел head следующим образом:

Уроки по JavaScript