Javascript что это в браузере

Обновлено: 04.07.2024

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

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

Что такое JavaScript

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

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

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

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

Это реинкарнация древней увлекательной игры знакомой всем кто играл на компьютере в девяностые годы прошлого века. Немного видоизмененная и написанная на языке JavaScript. В старых браузерах может не работать. Цель игры закрасить 75% игрового поля. Если в строящуюся линию попадет шар, то она пропадает и вы теряете одну жизнь. Начальная точка строительства линии подсвечивается красно-синей рамкой. Можно строить вертикальные или горизонтальные линии, изменяя ориентацию колесом мыши или нажатием на значки в углах игрового поля. Количество жизней, текущей уровень и оставшееся время показывается вверху, а процент закрашенной площади внизу поля. На каждом следующем уровне количество шаров увеличивается.

Технические подробности скриптового языка

Первая и последняя строчки, просто указывают браузеру, что между ними находится код JavaScript. Между ними находится само тело скрипта. Вторая строчка сообщает браузеру, что нужно отслеживать событие клика по элементу с идентификатором «showmodal» и если оно случится, то выполнить действие написанное на третьей строчке. Третья строка вызывает появление модального окна с текстом указанным в скобках. Вы можете нажать на слово показать , чтобы увидеть данное окно в действии.

Обычные программы для компьютеров хотя изначально тоже пишутся на каком то из языков программирования, когда полностью готовы, компилируются в машинный код и в таком виде уже устанавливаются в компьютер или распространяются (в linux бывают исходники для самостоятельной «сборки»), файл .exe блокнотом уже не открыть.

Как включить JavaScript в браузере

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

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

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

Осознав это, разработчики браузеров постарались убрать данную настройку подальше, чтобы простые пользователи случайно ее не нажали. Это абсолютно правильно, так как в современных условиях JavaScript должен быть всегда у всех включен и он включен примерно на 99% компьютеров. Его отключение по соображениям безопасности создает больше проблем чем пользы. Это все равно, что ходить на работу через полгорода пешком, потому что механический транспорт потенциально опасен. Можно конечно, но крайне утомительно и не удобно, так и сегодняшний интернет с отключенным JavaScript скучен и уныл. К тому же есть много других способов заразить компьютер, лучше тогда его совсем не включать, чтобы защититься наверняка.

Управляем JavaScript в Google Chrome

Нажимаете на значок --> , выбираете «Настройки». В самом низу будет ссылка «Показать дополнительные настройки». В группе «Личные данные» нажать кнопку «Настройки контента». Появится окно в котором в разделе JavaScript выбирает нужный вам пункт и затем кнопку «Готово».

окно настройки сценариев в Google Chrome

В Яндекс.браузере доступ к настройкам JavaScript осуществляется точно так же, за исключением небольших нюансов в названиях. Так кнопка «Настройки контента» здесь называется «Настройки содержимого».

Как включить или выключить JavaScript в Mozilla Firefox

В версии 22 и ниже, это можно было сделать через меню. Пункт «Инструменты» ⇒ «Настройки» на вкладке «Содержимое» ⇒ «Использовать JavaScript».

Затем разработчики браузера решили, что от этой настройки одни проблемы и в версии 23 и старше совсем убрали ее из графического интерфейса. Теперь нужно в адресной строке браузера набрать about:config , в появившемся окне с предупреждением нажать «Я обещаю, что буду осторожен!». В строке «Поиск» набрать javascript.enabled . Двойной щелчок по найденной строке или ПКМ и пункт «Переключить». Если в столбце «Значение» стоит «true» значит включен, если «false» то выключен. Настройки отличные от значения по умолчанию выделяются жирным шрифтом.

Включаем javascript в Firefox

JavaScript в браузере Opera

Нажать значок и выбрать в меню пункт «Настройки» или воспользоваться комбинацией клавиш ALT + P . Выбираете в левой колонке пункт «Сайты» в правой части окна первым пунктом идет раздел настроек JavaScript. Отмечаете нужный вам вариант переключателем. «Разрешить выполнение JavaScript (рекомендовано)» чтобы включить или «Запретить выполнение JavaScript» чтобы выключить.

Настройка использования скриптов в Opera

Включение JavaScript в браузере Internet Explorer

Чтобы добраться до настроек управлением JavaScript в Internet Explorer нужно щелкнуть по значку или по пункту меню «Сервис» и выбрать «Свойства браузера». Переходите на вкладку «Безопасность», где выбираете зону «Интернет» и затем нажимаете кнопку «Другой». Находите в списке блок «Сценарии» и отмечаете «Включить» или «Выключить» для «Активные сценарии».

Разрешение на использование скриптов в Internet Explorer

Как включить JavaScript в Safari

Если у вас Safari для Windows, то выбираете в меню «Правка» ⇒ «Настройки» или нажимаете комбинацию Ctrl + Б . Выбираете вкладку «Безопасность» и снимаете или ставите галочку напротив «JavaScript». Также можно управлять JavaScript через пункт меню «Разработка». Если напротив пункта «Отключить JavaScript» стоит галочка, значит он выключен, в обратном случае включен.

Настройка javascript в Safari

Если у вас Mac OS, то настройка использования JavaScript в Safari слегка отличается. Нужно нажать в меню на «Safari» и выбрать пункт «Настройки» или нажать сочетание клавиш ⌘ + , . Дальше так же, как в версии для Windows.

Возможно вы уже обратили внимание, что в браузерах Хроме, Yandex, Опере можно не просто включить или отключить JavaScript, а управлять им более гибко. Можно задать соответствующие правила для отдельного сайта, то есть запретить выполнение JavaScript только на отдельных сайтах или наоборот, запретить на всех кроме некоторых. Для этого нужно настроить исключения, нажав на кнопку «Управление исключениями».

Разработчики Firefox считают, что он должен работать всегда, поэтому и настройку убрали из графического интерфейса. Задать правила выполнения JavaScript в Firefox для отдельного сайта штатными средствами нельзя. Правда, если вам очень нужно, то можно поставить какое-нибудь расширение, например «NoScript». Там можно создавать правила для отдельного сайта, а так же оно обещает защищать ваш компьютер от различных атак с помощью скриптов.

Проблема в том, что любой программой нужно уметь грамотно пользоваться и правильно настроить. Автоматический режим это конечно хорошо, но идеальных алгоритмов не существует и всегда есть вероятность пропустить опасный код или наоборот заблокировать безопасный. Тут появляется дилемма, как и с антивирусами, если «закрутишь гайки», то будут частые ложные срабатывания. Сделаешь слабые ограничения, так и безопасность падает. Решать в каждом конкретном случае самому быстро надоедает, к тому же все равно объективно оценить угрозу простой пользователь не в состоянии, а JavaScript используется на 99% сайтов в интернете.

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

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

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

Окружение предоставляет свои объекты и дополнительные функции, в дополнение базовым языковым. Браузеры, например, дают средства для управления веб-страницами. Node.js делает доступными какие-то серверные возможности и так далее.

На картинке ниже в общих чертах показано, что доступно для JavaScript в браузерном окружении:

Как мы видим, имеется корневой объект window , который выступает в 2 ролях:

  1. Во-первых, это глобальный объект для JavaScript-кода, об этом более подробно говорится в главе Глобальный объект.
  2. Во-вторых, он также представляет собой окно браузера и располагает методами для управления им.

Например, здесь мы используем window как глобальный объект:

А здесь мы используем window как объект окна браузера, чтобы узнать его высоту:

Существует гораздо больше свойств и методов для управления окном браузера. Мы рассмотрим их позднее.

DOM (Document Object Model)

Document Object Model, сокращённо DOM – объектная модель документа, которая представляет все содержимое страницы в виде объектов, которые можно менять.

Объект document – основная «входная точка». С его помощью мы можем что-то создавать или менять на странице.

Мы использовали в примере только document.body.style , но на самом деле возможности по управлению страницей намного шире. Различные свойства и методы описаны в спецификации:

Спецификация DOM описывает структуру документа и предоставляет объекты для манипуляций со страницей. Существуют и другие, отличные от браузеров, инструменты, использующие DOM.

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

Правила стилей CSS структурированы иначе чем HTML. Для них есть отдельная спецификация CSSOM, которая объясняет, как стили должны представляться в виде объектов, как их читать и писать.

CSSOM используется вместе с DOM при изменении стилей документа. В реальности CSSOM требуется редко, обычно правила CSS статичны. Мы редко добавляем/удаляем стили из JavaScript, но и это возможно.

BOM (Browser Object Model)

Объектная модель браузера (Browser Object Model, BOM) – это дополнительные объекты, предоставляемые браузером (окружением), чтобы работать со всем, кроме документа.

Вот как мы можем использовать объект location :

Функции alert/confirm/prompt тоже являются частью BOM: они не относятся непосредственно к странице, но представляют собой методы объекта окна браузера для коммуникации с пользователем.

BOM является частью общей спецификации HTML.

Итого

Говоря о стандартах, у нас есть:

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

А теперь давайте перейдём к изучению DOM, так как страница – это основа всего.

Необходимые навыки: Базовая компьютерная грамотность, знание основ HTML и CSS.
Цели: Знакомство с JavaScript и его возможностями, способами его подключения к веб-странице.

Определение высокого уровня

JavaScript это язык, который позволяет вам применять сложные вещи на web странице — каждый раз, когда на web странице происходит что-то большее, чем просто её статичное отображение — отображение периодически обновляемого контента, или интерактивных карт, или анимация 2D/3D графики, или прокрутка видео в проигрывателе, и т.д. — можете быть уверены, что скорее всего, не обошлось без JavaScript. Это третий слой слоёного пирога стандартных web технологий, два из которых (HTML и CSS) мы детально раскрыли в других частях учебного пособия.


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

Три слоя прекрасно выстраиваются друг над другом. Возьмём простой текст для примера. Для придания структуры и смыслового назначения тексту, разметим его с помощью HTML:


Затем мы добавим немного CSS, что бы это выглядело симпатичнее:


И наконец, добавим немного JavaScript для придания динамического поведения:

Попробуйте кликнуть по тексту чтобы увидеть, что произойдёт (Вы так же можете найти это демо на GitHub — смотрите исходный код, или запустите вживую)!

JavaScript может делать намного больше — давайте выясним это более детально.

Так что же он действительно может делать?

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

  • Хранить данные внутри переменных. В примере выше, мы, например, запрашивали ввод нового имени, которое нужно было ввести, затем сохраняли имя в переменной name .
  • Операции над фрагментами текстов (известными в программировании как "строки"). В примере выше мы брали строку "Player 1: " и присоединили её к значению переменной name для получения полного текста, например: ''Player 1: Chris".
  • Запускать код в соответствии с определёнными событиями происходящими на web странице. В нашем примере выше, мы использовали click (en-US) событие, для определения момента, когда кнопка была кликнута, в соответствии с этим запускался код, который обновлял текст.
  • И многое другое!

Ещё более увлекательным является функциональность, созданная поверх основного языка JavaScript. Так называемые интерфейсы прикладного программирования (API) предоставляют вам дополнительные сверхспособности для использования в вашем коде JavaScript.

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

Они обычно делятся на две категории.


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

  • API-интерфейс DOM (Document Object Model) позволяет вам манипулировать HTML и CSS, создавать, удалять и изменять HTML, динамически применять новые стили к вашей странице и т. д.. Каждый раз, когда вы видите всплывающее окно на странице или какое-то новое содержимое, Как мы видели выше в нашем простом демо), например, это DOM в действии.
  • API геолокации извлекает географическую информацию. Так Google Maps может найти ваше местоположение и нанести его на карту.
  • API Canvas и WebGL позволяют создавать анимированные 2D и 3D-графики. Люди делают некоторые удивительные вещи, используя эти веб-технологии - см. Chrome Experiments и webglsamples.
  • Аудио и видео API, такие как HTMLMediaElement и WebRTC, позволяют делать действительно интересные вещи с мультимедиа, такие как проигрывание аудио и видео прямо на веб-странице, или захватывать видео с веб-камеры и отображать его на Чужой компьютер (попробуйте наш простой демонстрационный снимок, чтобы понять идею)

Примечание: Большинство наших демо не будут корректно работать в старых браузерах — поэтому будет хорошей идеей, для запуска вашего кода установить один из современных браузеров , таких как Firefox, Chrome, Edge или Opera . Также понадобится более подробно рассмотреть раздел по кроссбраузерному тестированию, когда вы приблизитесь к разработке производственного кода (т.е реального кода, который будут использовать клиенты).

По умолчанию сторонние API-интерфейсы не встроены в браузер, и вам придётся захватывать их код и информацию из какого-либо места в Сети. Для примера:

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

Примечание: Эти API-и являются продвинутыми , и мы не будем их рассматривать в нашем курсе, но ссылки, данные выше, предлагают полную документацию, если вы заинтересованы в более подробной информации.

Доступно ещё больше! Но пока не заостряйте на этом внимание. Вы не сможете создать следующий Facebook, Google Maps или Instagram после 24 часов изучения JavaScript — сначала нужно изучить основы. И именно для этого вы здесь — давайте двигаться дальше!

Что JavaScript делает на вашей странице?

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

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


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

Это хорошо, так как часто использование JavaScript заключается в динамическом изменении HTML и CSS в целях обновления пользовательского интерфейса посредством Document Object Model API (как упоминалось выше). Если бы запуск JavaScript осуществлялся прежде загрузки HTML и CSS, то это привело бы к возникновению ошибок.

Безопасность браузера

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

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

Последовательность выполнения JavaScript

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

Здесь мы выбираем абзац текста (строка 1), а затем добавляем к нему обнаружение событий (строка 3), чтобы при нажатии на этот абзац выполнялся блок кода updateName() (строки 5–8). Блок кода updateName() (эти типы многократно используемых блоков кода называются "функции") запрашивает у пользователя новое имя, а затем вставляет это имя в абзац для обновления отображения.

Если вы поменяете порядок первых двух строк кода, он перестанет работать — вместо этого вы получите ошибку возвращаемую в консоль браузера — TypeError: para is undefined . Это значит, что объект para ещё не существует и вы не можете добавить к нему обнаружение событий.

Примечание: Это очень частая ошибка — вы должны быть осторожны, чтобы объекты, на которые ссылается ваш код, существовали до того, как вы попытаетесь что-то с ними сделать.

Интерпретируемый против компилируемого кода

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

С другой стороны, к компилируемые языки преобразуются (компилируются) в другую форму, прежде чем они будут запущены компьютером. Например, C / C ++ компилируются в язык ассемблера, который затем запускается компьютером.

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

Серверный против клиентского кода

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

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

Веб-страница без динамического обновления контента называется статической — она просто показывает один и тот же контент все время.

Как добавить JavaScript на вашу страницу?

JavaScript применяется к вашей HTML странице точно так же, как CSS. И если CSS использует элементы <link> для внешних стилей и <style> для встроенных в HTML, то для JavaScript нужен только один друг в HTML мире — элемент <script> . Давайте узнаем, как это работает.

Внутренний JavaScript

  1. Сначала, сделайте локальную копию нашего файла-примера apply-javascript.html. Сохраните его в удобное для вас место.
  2. Откройте этот файл в вашем браузере и в вашем текстовом редакторе. Вы увидите, что HTML создаёт простую веб-страницу с активной кнопкой.
  3. Затем, перейдите в текстовый редактор и добавьте следующие строки перед закрывающим тегом </head> :

Примечание: Если ваш пример не работает, пройдите ещё раз все шаги и проверьте, сделали ли вы все правильно. Сохранили ли вы вашу локальную копию начального кода, как .html файл? Добавили ли ваш <script> элемент после тэга </body> ? Ввели ли вы JavaScript именно так, как показано? JavaScript регистрозависимый, и очень привередливый. Поэтому вам нужно вводить синтаксис именно так, как показано, в противном случае оно может не работать.

Примечание: вы можете увидеть эту версию на GitHub-е как apply-javascript-internal.html (посмотреть вживую).

Внешний JavaScript

Это отлично работает, но что если мы хотим поместить наш JavaScript в отдельный файл? Давайте сейчас разберёмся с этим.

  1. Сначала, создайте новый файл в той же папке, что и ваш файл-пример HTML. Назовите его script.js — убедитесь, что у имени файла расширение .js, так как оно распознается, как JavaScript.
  2. Замените ваш текущий элемент <script> на следующий:

Примечание: вы можете увидеть эту версию на GitHub-е как apply-javascript-external.html и script.js (посмотреть вживую).

Инлайновые JavaScript обработчики

Обратите внимание, что иногда можно столкнуться с частями JavaScript-кода, который живёт внутри HTML. Это может выглядеть примерно так:

Вы можете попробовать эту версию в нашей демонстрации ниже:

Эта демонстрация имеет те же функциональные возможности, что и в предыдущих двух разделах, за исключением того, что элемент <button> содержит встроенный обработчик onclick , который запускает функцию при нажатии кнопки.

Но пожалуйста, не делайте этого. Это плохая практика — загрязнять ваш HTML кодом JavaScript, и она не эффективна — вам нужно будет добавить атрибут onclick="createParagraph()" к каждой кнопке, к которой вы хотите подключить JavaScript.

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

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

Примечание: Попробуйте отредактировать вашу версию apply-javascript.html и добавить ещё несколько кнопок в файл. После перезагрузки вы должны увидеть, что все кнопки создают параграф, если кликнуть на них. Классно, да?

Стратегии загрузки скриптов

Существует ряд проблем, связанных с загрузкой скриптов в нужное время. Всё не так просто, как кажется! Распространённой проблемой является то, что весь HTML-код на странице загружается в том порядке, в котором отображается. Если вы используете JavaScript для манипуляции элементами на странице (или, точнее, в DOM – Объектной Модели Документа), ваш код не будет работать, если JavaScript-код загрузится и распознается раньше HTML-кода, с которым вы пытаетесь взаимодействовать.

Комментарии

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

    Однострочный комментарий пишется после двойного слеша (//), например:

Так, например, мы можем описать наш последний демо-пример JavaScript подобными комментариями:

Выводы

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

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

Если HTML определяет структуру и контент веб-страницы, а CSS задаёт формат и внешний вид, то JavaScript добавляет интерактивность и создаёт богатые веб-приложения.

Однако, под общим термином "JavaScript", в контексте веб-браузера, понимаются несколько очень разных вещей. Одна из них - это базовый язык программирования (ECMAScript), а другая - коллекция Web APIs, включая DOM (Объектно-ориентированная модель документа).

JavaScript, базовый язык программирования (ECMAScript)

Базовый язык JavaScript стандартизирован комитетом ECMA TC-39 как язык программирования под названием ECMAScript.

Базовый язык также используется в не-браузерном окружении, например, в node.js.

Что попадает под понятие ECMAScript?

Кроме прочего, ECMAScript определяет:

  • Синтаксис языка (правила парсинга, ключевые слова, порядок выполнения, инициализацию объекта литерала. )
  • Механизм обработки ошибок (исключения, try/catch оператор,возможность создавать новые типы ошибок)
  • Типы данных (логические, числа, строки, функции, объекты. )
  • Глобальный объект. В браузерах глобальным объектом является window , но ECMAscript определяет только те APIs, которые не являются специфическими для браузера, как parseInt , parseFloat , decodeURI , encodeURI .
  • Механизм прототипного наследования
  • Встроенные объекты и функции (JSON, Math, Array.prototype методы, методы самоанализа объекта. )
  • Строгий режим

Браузерная поддержка

На октябрь 2016, текущие версии основы веб-браузеров включали ECMAScript 5.1 и ECMAScript 2015, но более старые версии (все ещё находящиеся в использовании) реализуют только ECMAScript 5.

Будущее

Главное 6-ое издание ECMAscript было официально одобрено и опубликовано как стандарт 17 июня 2015 года на собрании ECMA General Assembly. С тех пор выпуски ECMAscript публикуются на ежегодной основе.

API по интернационализации

Спецификация ECMAScript для API по интернационализации - дополнение к языковой спецификации ECMAScript, также стандартизированной Ecma TC39. API по интернационализации обеспечивает сопоставление (строковое сравнение), форматирование чисел, дат и времени для приложений на JavaScript, позволяя выбирать язык и проектировать функциональность в зависимости от нужд. Начальный стандарт был одобрен в декабре 2012; статус реализации в браузерах ведётся в документации Intl object. Спецификация по интернационализации сейчас также утверждается на ежегодной основе, и браузеры постоянно улучшают её реализацию.

DOM APIs

WebIDL

Спецификация WebIDL является связующим звеном между технологиями DOM и ECMAScript.

Ядро DOM

Объектно-ориентированная модель документа (DOM) это кросс-платформенное, языково-независимое соглашение по представлению объектов и взаимодействию с ними в документах HTML, XHTML и XML. Объект в DOM-дереве может быть адресован и обработан с помощью своих методов. Ядро Объектно-ориентированной модели документа стандартизируется W3C и определяет языково-независимые интерфейсы, абстрагирующие HTML и XML документы как объекты, и механизмы для управления этой абстракцией. Кроме прочих вещей, опряденных в DOM, можно также найти:

  • Структуру документа, древовидную модель, и архитектуру событий DOM в ядре DOM: Node , Element , DocumentFragment , Document , DOMImplementation , Event , EventTarget , …
  • Менее строгое определение архитектуры событий DOM, также как и определённые события DOM.
  • Другие вещи, такие как DOM Traversal и DOM Range.

С точки зрения ECMAScript, объекты определённые в спецификации DOM называются объектами среды исполнения ("host objects").

HTML DOM

HTML, это язык разметки Web, который определён в терминах DOM/ is specified in terms of the DOM. Layered above the abstract concepts defined in DOM Core, HTML also defines the meaning of elements. The HTML DOM includes such things as the className property on HTML elements, or APIs such as document.body .

The HTML specification also defines restrictions on documents; for example, it requires all children of a ul element, which represents an unordered list, to be li elements, as those represent list items. In general, it also forbids using elements and attributes that aren't defined in a standard.

Другие API, заслуживающие внимания

Поддержка браузерами

Каждый разработчик сталкивавшийся с DOM понимает как там все безнадёжно. Реализация той иной функциональности может отличаться, а следовательно и поведение. Главной причиной этого послужило то, что само описание спецификации DOM, было недостаточно ясным и подробным для разработчиков браузеров. Кроме того разные производители браузеров добавили несовместимые функциональности в своих браузеры или функциональности перекрывающие друг друга (например модель событий в IE). В данный момент консорциум W3C и частично WHATWG пытаются описать детально поведение тех или иных функций, чтобы улучшить совместимость между браузерами. Следуя этой тенденции, можно надеяться что браузеры улучшат свои реализации основываясь на этих спецификациях.

Наиболее общий, но возможно не самый надёжный способ улучшить кроссбраузерную совместимость это воспользоваться библиотеками JavaScript. Эти библиотеки абстрагируют вас от особенностей реализации DOM в том или ином браузере, и гарантируют, что их API работает одинаково в разных браузерах. Наиболее распространённые из них это jQuery и prototype.

Читайте также: