Как перенести скрипт из html в js файл

Обновлено: 05.07.2024

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

Первое, о чём следует сказать, — зачем вообще выносить код во внешний файл? Ответ прост. Давайте представим, что у пользователя (user) есть большой script, занимающий 100 и более строк кода. Скрипт этот должен работать на каждой странице веб-сайта. Каждый раз дублировать сотни строк кода, как и само наличие в HTML-документе не HTML-кода — не самое оптимальное решение, и это ещё мягко сказано. Намного лучше вынести код JS в отдельный файл и подключить его к HTML-странице (по аналогии с файлами, отвечающими за стили). Но как же это реализовать?

На деле подключение script к основному файлу особых сложностей не вызывает. Можно воспользоваться тегом <script>, добавив к нему атрибут src (как и в случае, если речь идёт о картинках). В src-атрибуте потребуется прописать путь к подключаемому script.

Практический пример

Для примера давайте перенесём коротенькую однострочную программу во внешний файл с последующим подключением этого файла. Пусть файл называется scripts.js и имеет следующее содержимое:

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

Давайте теперь посмотрим, каким образом выглядит непосредственное подсоединение внешнего JS-файла:

1_1-1801-78c28c.jpg

Обновив страницу, мы увидим обычное модальное окно с соответствующим приветствием.

2_1-1801-b52756.jpg

Какие моменты важно учитывать в процессе подключения scripts? Смотрите, в примере JS-скрипт помещён в конец HTML-документа, то есть непосредственно перед закрывающим тегом body. Какое-то время назад скрипты подключали в тегах head, то есть в начале документа. Но в настоящее время поступать таким образом не рекомендуют — лучше всего выполнять подключение именно в конце. Давайте разберёмся, почему.

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

3_1-1801-e46fa6.jpg

На картинке выше видно, что кроме модального окна, ничего нет, то есть сам контент (в нашем случае — надпись «Это обычный HTML документ») отсутствует. Дело в том, что при подсоединении внешнего скрипта между тегами head, веб-браузер в первую очередь загрузит и попытается выполнить именно его. И до тех пор, пока загрузка и выполнение не завершатся, веб-браузер не покажет оставшуюся часть документа. Всё вроде бы ничего, но что будет, если файл по каким-нибудь причинам станет загружаться медленно? В результате users будут ждать загрузку этого файла, а ждать сейчас никто не любит, поэтому, скорее всего, users отдадут предпочтение другому ресурсу. Чтобы этого не случилось, сегодня рекомендуют подключать scripts в конце документа, то есть непосредственно перед </body>.

Однако бывают ситуации, когда какая-нибудь библиотека требует подключения как раз таки в начале документа. В данных обстоятельствах пригодятся атрибуты async и defer — они дают возможность веб-браузеру выполнять асинхронную загрузку скриптов (веб-браузер начнёт загружать скрипт, не останавливая отображение контента). Вот, как это работает (будем использовать атрибуты по очереди):

1-1801-e457cf.jpg

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

4_1-1801-ec1e08.jpg

Но атрибуты async и defer всё же несколько отличаются: — defer сохраняет последовательность при подключении внешних скриптов. При использовании этого атрибута первым всегда будет выполняться скрипт, подключаемый выше. Это может иметь значение, если подключаются несколько scripts, среди которых один зависит от другого. То есть разработчик получает возможность подключить основной скрипт раньше зависимого. Можно констатировать, что атрибут defer обеспечивает соблюдение порядка; — async просто обеспечивает выполнение скрипта непосредственно после того, как он загрузился. Соответственно, при наличии скриптовых зависимостей этот атрибут лучше не использовать.

Несколько слов о jQuery или как подключить JS к JS (файл .js к другому файлу .js)?

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

Интересуют более профессиональные знания по JS-разработке? Их можно получить на курсах в OTUS:

Осваивайте профессию, начните зарабатывать, а платите через год!


Курсы Python Ак­ция! Бес­плат­но!


Станьте хакером на Python за 3 дня


Веб-вёрстка. CSS, HTML и JavaScript



Курс Bootstrap 4


Станьте веб-разработчиком с нуля

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

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

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

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

JavaScript в элементе script

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

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

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

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

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

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

Внешний JavaScript

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

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

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

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

На заметку: Подробнее о путях файлов читайте в разделе «Абсолютные и относительные ссылки».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Атрибут async

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

При обнаружении тега <script async src="https://wm-school.ru/js/"> браузер не останавливает обработку HTML-документа для загрузки и выполнения скрипта, выполнение может произойти после того, как скрипт будет получен параллельно с разбором документа. Когда скрипт будет загружен – он выполнится.

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

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

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

Атрибут defer

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

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

Несмотря на то, что в приведенном примере теги <script defer src="https://wm-school.ru/js/"> включены в элемент <head> HTML-документа, выполнение сценариев не начнется, пока браузер не дойдет до закрыва­ющего тега </html> .

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

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

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

Итоги

  • JavaScript можно добавить в HTML-документ с помощью элемента <script> двумя способами:
    • Определить встроенный сценарий, который располагается непосредственно между парой тегов <script> и </script> .
    • Подключить внешний файл с JavaScript-кодом через <script src="https://wm-school.ru/js/%D0%BF%D1%83%D1%82%D1%8C"></script> .

    Задачи

    Всплывающее окно

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


    С первых дней существования Интернета веб-сайты разрабатывались в основном на HTML и CSS. И если JavaScript код все-таки загружался на страницу то, это обычно происходило в виде небольших фрагментов, которые обеспечивали простейшие визуальные эффекты или попытки сделать страничку более интерактивной. Поэтому программы на JavaScript чаще в объеме одного файла помещались в тег script . Разработчик мог также разбить код JavaScript на несколько скриптов (файлов), но даже при таком подходе все переменные и функции находящиеся в них будут добавлены в общую глобальную область видимости.

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

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

    Модульное программирование

    До появления концепции модулей в JavaScript, в случае если разработчик хотел организовать свой код как отдельные сегменты кода, он создавал несколько файлов и связывал их как отдельные сценарии. Чтобы продемонстрировать этот подход, создадим для примера следующие файлы: index.html и два файла JavaScript, functions.js и script.js .

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

    И так создайте файл index.html в текстовом редакторе и добавьте в него следующий код:

    Этот HTML код будет отображать в h2 заголовке страницы значения переменных x и y , а также результат операций с этими переменными в следующих за ним элементах p . Значения атрибутов id для элементов устанавливаются путем манипулирования DOM , которое будет производиться в коде script.js . Этот код также будет устанавливать начальные значения переменных x и y .

    Файл functions.js содержит математические функции, которые используются в первом сценарии script.js .

    Откройте файл functions.js и добавьте в него следующий код:

    И наконец, код в файле script.js определяет значения переменных x и y , применяет к их значениям математические функции и отображает результат:

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


    Для веб-сайтов в которых используются несколько небольших скриптов это достаточно эффективный способ: просто разделить код по разным скриптам (файлам). Однако с этим подходом связаны некоторые проблемы, в том числе:

    • Загрязняется глобальное пространство имен. Все переменные, которые вы создали в своих сценариях: sum , difference и т.д., теперь находятся в глобальном объекте window . И если вы попытаетесь использовать другую переменную с именем sum , вызываемую в другом файле, то будет трудно разобраться, какое значение будет использоваться в текущем сценарии, поскольку все они будут использовать одну и ту же глобальную переменную window.sum . Единственный способ сделать переменную приватной private: это поместить ее в область действия некоторой функции. Однако при этом может возникнуть конфликт, например, между значением x атрибута id элемента DOM и переменной var x .
    • Усложняется управление зависимостями. Сценарии должны загружаться в заданном порядке следования сверху вниз, чтобы корректно обеспечить доступность всех переменных в нужное время. Сохранение сценариев в виде разных файлов создает иллюзию разделения, но по сути это то же самое, что сохранение всего Javascript кода вместе в inline теге <script> .

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

    После этого появилось несколько других решений, реализующих модульность Javascript кода: CommonJS , синхронный подход, реализованный в Node.js, Asynchronous Module Definition (AMD), который реализовывал асинхронный подход, а также Universal Module Definition (UMD) , который задумывался как универсальный подход, поддерживающий оба предыдущих стиля разделения кода.

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

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

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

    Модули (называемые также модулями ECMAScript или модулями ES) теперь доступны нативно (встроены в JavaScript), и в оставшейся части этого руководства вы узнаете, как использовать их в своем коде.

    Модули в JavaScript

    Ключевые слова import и export используются для работы с модулями в JavaScript:

    • import : применяется для чтения кода, экспортируемого из другого модуля.
    • export : применяется для предоставления кода другим модулям.

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

    Добавим в файл следующий код:

    Теперь в верхней части файла script.js , нам необходимо использовать ключевое слово import для извлечения (импорта) кода функций из модуля functions.js .

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

    Добавьте следующий код в файл script.js :

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

    Чтобы этот код загружался в браузере как модуль, а не как обычный скрипт, добавьте в файл index.html к тегу script атрибут type="module" . Любой код, который использует инструкции import или export должен содержать указанный атрибут при подключении соответствующего файла модуля:

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

    Модули отличаются от обычных скриптов несколькими существенными особенностями:

    • Модули ничего не добавляют в global глобальную область видимости (или в объект window ).
    • Модули всегда выполняются в строгом режимеstrict mode.
    • Загрузка одного и того же модуля дважды в один и тот же файл не будет иметь никакого эффекта, поскольку модули выполняются только один раз.
    • Работа с модулями требует серверной среды выполнения кода.

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

    Далее мы изучим еще несколько эффективных способов использования синтаксиса import и export .

    Именованный экспорт

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

    Этот код позволяет импортировать функции sum и difference по их имени, используя фигурные скобки:

    Также можно использовать синтаксис псевдонимов для переименования импортируемых функций. Эта возможность позволяет избежать конфликтов имен в импортирующем файле. В следующем примере функция sum будет переименована в add , difference — в subtract .

    Вызов функции add() эквивалентен вызову функции sum() .

    Используя * синтаксис, вы можете импортировать содержимое всего модуля в составе одного объекта. В этом случае функции sum и difference будут доступны как методы объекта mathFunctions :

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

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

    Экспорт по умолчанию

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

    Перепишем код файла functions.js в следующем виде:

    В файле script.js импортируем функцию sum по умолчанию, как это показано в коде ниже:

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

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

    Импортировать объект book можно следующим образом:

    Точно так же в следующем примере демонстрируется экспорт по умолчанию анонимной стрелочной функции:

    Функция импортируется из модуля файла script.js следующим образом:

    Именованный экспорт и экспорт по умолчанию можно использовать совместно друг с другом, как в модуле из примера ниже, который экспортирует два именованных значения и одно значение (функцию) по умолчанию:

    Импортируются эти переменные и функция следующим образом:

    Теперь в скрипте доступны как значение по умолчанию, так и именованные значения.

    Вывод

    Методы использования модульного подхода программирования позволяют разделять код на отдельные компоненты, что делает ваш код более пригодным для повторного использования, согласованным, а также защищает глобальное пространство имен от загрязнения. Интерфейс модуля может быть реализован в нативном JavaScript с использованием ключевых слов import и export .

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


    Предположим, что у вас есть html-документ и javascript код, который должен в нем выполняться. Код javacript может находиться как внутри html-документа, так и в отдельном файле формата *.js.

    Проблема, которая очень часто появляется у начинающих пользователей: Как подключить javacript-код или файл к html документу?

    В этой небольшой заметке мы рассмотрим, как это можно сделать.

    Все мои уроки по Javascript здесь.

    Пусть содержимое файла html будет следующее:

    Ничего лишнего. Теперь код, который необходимо подключить:

    Вариант 1. Подключение внутри html-файла.

    Делается это с помощью конструкции:

    Вставим этот код можно внутри тэга <body>, либо внутри тега <head>. В итоге, содержимое html файла может буть следующим:

    Проверяем, что все работает:

    21-10-2014 13-05-32

    Вариант 2. Подключение внешнего файла скрипта с кодом.

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

    В итоге, имеем два файла index.html и script.js, которые находятся в одной папке.

    Как теперь подключить скрипт к html файлу? В этом случае нужно воспользоваться тэгом

    Об адресах и как их правильно выставлять информация здесь.

    Так как файл скрипта script.js находится в той же папке, что и файл index.html, то html-код может быть следующим:

    Как правило, скрипты подключаются в области <head> документа. Если все сделано правильно, то вы точно также сможете увидеть всплывающее окно с надписью, что "javascript подключен". Это два основных способа, как вы можете подключить код javascript к html документу.

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