Перейти к содержимому

Как запустить код javascript в браузере

  • автор:

Как запустить Javascript в браузере. Консоль

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

С javascript-ом такую вещь проделать легче легкого, потому что все что вам нужно — это ваш браузер. Прямо сейчас вы можете нажать сочетание клавиш Ctrl+Shift+C и вы увидите примерно следующую картину:

Открывшаяся панель называется developer tools, ну, или, если хотите по-русски, инструменты разработчика. Это то, что помогает фронтендерам выполнять их грязную работу. Мы их часто просто зовем девтулзами.

Тут вы видите кучу вкладок, но нас будет интересовать одна: Console. Зайдем в нее. Это может выглядеть примерно так

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

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

В JS это будет записано следующим образом.

3 * 2 / 18 - 5 + 1 

Попробуйте вставить этот код в консоль, нажать Enter и посмотреть, что будет.

Должно получиться что-то вроде этого

Браузер взял наш javascript-код и посчитал его для нас. Да, вы можете спокойно пользоваться браузером в консоли, как калькулятором, он вам все вычислит. И тут можно пользоваться круглыми скобками, как математике. Означают они то же самое: все, что в скобках будет считаться раньше всего остального. Вам стоит попробовать что-то посчитать в консоли, и посмотреть, что будет.

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

Есть ли возможность запустить данный код в браузере?

Код парсит с сайта погоду, полученные данные я хочу вывести на html страницу, но если данный скрипт подключать к html, то выводит ошибку Uncaught ReferenceError: require is not defined , как быть? Или это возможно только в node.js? На чистом js такое не получится?

Отслеживать
2,741 2 2 золотых знака 13 13 серебряных знаков 28 28 бронзовых знаков
задан 30 янв в 15:03

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

30 янв в 15:15
Обидно, ну лан :0
30 янв в 15:30
1 каждый второй сервис погоды спокойно отдает данные через апи и парсить его html вёрстку попросту не зачем(только если хочется по фану размятся в написании парсера). 2 если тех данных которые необходимы, в апи нету и как ни крути надо парсить — можно создать свою html страницу подцепить на ней все что душе угодно включая ноду, а после добавить на ней же фрейм
30 янв в 15:39

@puffleeck даже если сайт не лочит загрузку во фреймах, браузер всё равно не позволит получить доступ к содержимому фрейма

30 янв в 15:43

Если вы очень хотите, можете попробовать эти библиотеки подключить через CDN Вдруг у вас получится осуществить задуманное ) Еще вариант — использовать сборщик js, например webpack, для сборки общего бандла js

30 янв в 15:47

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

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

И да, с вашим сайтом это скорее всего не сработает. Политика браузера CORS (Cross-Origin Resource Sharing) такова, что не позволит считывать данные с HTTPS, если сам владелец хоста это не разрешит в настройках своего сервера. Поэтому в моём предоставленном примере используется протокол HTTP.

  Example      

Отслеживать
ответ дан 30 янв в 15:53
172 5 5 бронзовых знаков
С сайтом ru-meteo.ru этот код не сработает
30 янв в 15:54

Действительно, Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на ru-meteo.ru. Но спасибо за ответ!)

Взаимодействие JavaScript-кода с браузером

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

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

Во-вторых, это объект document , который отвечает за отображаемый во вкладке документ. Это может немного путать. Для простоты скажем, что document – это то, что отображается пользователю, а window – это то, в чем этот document отображается.

В-третьих, это объект console , который отвечает за вывод в консоль браузера. Да, у браузеров тоже есть консоль, она используется преимущественно для отладки скрипта и вывода сообщений об ошибках. Обычно открыть ее можно нажав кнопку F12 в вашем браузере.

Объект window , является объектом верхнего уровня для всех объектов страницы. И хотя вы можете прямо писать имена объектов document и console в вашем скрипте, на самом деле их имена window.document и window.console .

4.2 Диалоги в JavaScript

Метод alert()

Также у объекта window есть несколько функций, которые видны скрипту страницы. Самая часто используемая – это функция alert() . Она позволяет отобразить диалоговое окно с сообщением пользователю. Работа скрипта при этом приостанавливается, пока пользователь не нажмет OK.

 alert("JavaScript is the best!"); 

Метод prompt()

Также есть функция, с помощью которой можно попросить пользователя ввести какое-то значение – это prompt() .

 var age = prompt("Введите год рождения"); 

Метод confirm()

Можно вывести диалоговое окно с двумя кнопками Ok , Cancel – спросить пользователя о каком-то действии.

 var isOK = confirm("Are you ready"); 

4.3 Событие onload()

И еще один полезный и интересный момент. У окна браузера есть event (событие), которое возникает, когда документ полностью загружен. Ты можешь задать код, который должен выполниться после того, как документ будет загружен и отображен.

Сделать это можно тремя способами.

Во-первых, можно встроить JavaScript-код прямо в HTML-страницу в виде значения атрибута:

 onload text-green">alert('документ загружен');"> 

Во-вторых, можно встроить JavaScript-код просто в HTML-страницу:

   function load() < alert('документ загружен'); > window.onload = load;  

В-третьих, можно записать немного покороче, объявив анонимную функцию:

   window.onload = function () < alert('документ загружен'); >  

4.4 Событие onclick()

И наконец еще одно важное событие (event) – это event OnClick . Который возникает у любого элемента, на который кликнул пользователь. Так же, как и event OnLoad его можно задать разными способами, поэтому мы приведем только самый простой:

  onclick text-green">alert('пользователь кликнул по картинке');"> 

Введение в JavaScript

Этим занятием мы открываем с вами курс обучения очень популярному языку программирования JavaScript. Сначала пару слов об этом языке. Жизнь современного человека неотделима от сети Интернет и в частности от просмотра различный сайтов с помощью вашего любимого браузера: Opera, FireFox, Chrome, Yandex и т. п. И именно здесь большинство из нас сталкиваются с JavaScript, то есть, со сценариями – небольшими программами, которые выполняются в браузере и заметно расширяют функциональность веб-страниц. А иногда даже более, чем заметно в случаях браузерных игр. Что же получается? Браузеры могут не только отображать HTML-страницу, но еще и выполнять программы, встроенные в HTML-документ? Да, современные браузеры – это полноценные платформы для отображения самой разнообразной информации сети Интернет.

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

  • Atom (кроссплатформенный, бесплатный);
  • Sublime Text (кроссплатформенный, условно-бесплатный);
  • Notepad++ (Windows, бесплатный).

Я все свои примеры буду показывать в редакторе SublimeText, который очень удобен как для создания HTML-документов, так и для написания скриптов на JavaScript. Этих двух программ: браузера и текстового редактора, будет вполне достаточно для изучения JavaScript в рамках наших занятий. Язык JavaScript не следует путать с языком программирования Java. Это совершенно разные языки. Просто создатели JavaScript вначале хотели показать, что JavaScript является как бы «младшим братом» языка Java. Но, впоследствии оказалось, что у них, в общем-то, нет особого родства. В целях безопасности на скрипты, запускаемые в браузере, наложен ряд ограничений. Основные такие:

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

А вот для чего обычно используется JavaScript:

  • Изменять HTML-страницу и модифицировать стили.
  • Реагировать на действия пользователя, щелчки мыши, перемещения указателя, нажатия клавиш.
  • Отправлять сетевые запросы на удалённые сервера, скачивать и загружать файлы (технологии AJAX и COMET).
  • Получать и устанавливать куки, задавать вопросы посетителю, показывать сообщения.
  • Рисовать в браузере, используя canvas (например, в браузерных играх).

Как и любой другой язык программирования JavaScript имеет свои стандарты, например, ES5 или ES6. Это связано с развитием этого языка: в каждом новом стандарте добавляются новые функции, правила, поддерживаемые им. А, какие-нибудь прежние приемы помечаются как устаревшие и их уже не рекомендуется использовать. Например, стандарт ES5 расшифровывается как ECMAScript 2009. А вот ES6 – это уже ECMAScript 2015 – более свежий стандарт. И здесь кроется некоторая проблема: создавая скрипт под последний свежий стандарт, нужно быть уверенным, что он будет корректно исполняться на браузере клиента. Не секрет, что некоторые пользователи не спешат обновлять свой браузер, что тормозит внедрение новых стандартов представления HTML-документов. И, значит, у части пользователей новые «фичи» на JavaScript могут не работать. Но, так как со времени ES6 прошло уже несколько лет, мы будем рассматривать его в наших занятиях. Кроме того, существует популярный JavaScript-компилятор Babel.JS, который позволяет скрипты стандарта ES6 корректно переводить в аналогичные скрипты стандарта ES5. Следующий важный вопрос: как быстро исполняются скрипты в браузерах? Здесь можно сказать только, что браузеры делают все возможное для ускорения выполнения таких программ. Сначала они читают (парсят) текст скрипта. Затем, преобразуют (компилируют) в машинный код. И, наконец, запускают полученный код. Все эти этапы выполняет так называемая виртуальная машина JavaScript, встроенная в каждый современный браузер. Они еще называются движками. Например, браузеры Chrome и Opera используют движок V8. А браузер Firefox – движок SpiderMonkey. Другие браузеры применяют другие движки. Давайте теперь посмотрим как внедряется JavaScript в HTML-документ. Предположим у нас есть вот такая простая страничка.

DOCTYPE html">  Уроки по JavaScript  

Чтобы браузеру указать где у нас здесь будет находиться программа на JavaScript, мы пишем тег

script type="text/javascript">script>

И видите? Sublime Text нам сразу добавляет вот этот необязательный атрибут type. Теперь в нем нет необходимости и по умолчанию, все что идет внутри тега

script>script>

Где можно располагать этот тег? Ограничений особых нет: его можно располагать и в head и в body, в начале страницы или в конце. Но принято код располагать или в разделе head или в конце перед закрывающимся тегом . Почему так? Дело в том, что JavaScript часто работает с элементами (тегами) HTML-документа и если мы пропишем его в начале страницы, то можно столкнуться с проблемой, когда идет обращение к тегу, но он еще не был загружен. Например, вот такая простая программка:

let obj = document.getElementById('id_div'); console.log(obj);

будет работать, если тег

div id="id_div">div>

находится до этого скрипта. А вот если разместить этот тег после него, то в консоле мы увидим значение null, то есть, объект не был найден. Такого точно не произойдет, если скрипт подключается в конце страницы после загрузки всех тегов. Забегая вперед скажу, что в JavaScript есть возможность подождать загрузку документа целиком и только потом выполнять те или иные функции. Именно так реализовано большинство программ. Поэтому расположение самого скрипта в HTML-документе – это скорее дело традиции или привычки. Часто скрипты хранятся во внешних файлах и лишь подключаются к HTML-документу. Для этого тег script следует записать с атрибутом src:

script src="ex1.js">script>

который указывает путь к файлу с программой на JavaScript. Расширение файла обязательно должно быть js. Этим мы обозначаем файл, содержащий JavaScript код. Теперь обновим HTML-страницу и убедимся, что все работает также. Так как наш файл располагается в том же каталоге, что и HTML-документ, то в атрибуте src мы просто пишем его имя (без указания каталогов). Однако, в практике создания сайтов принято располагать такие скрипты в каталоге js. Мы так и сделаем. Создаем каталог js и перемещаем туда наш скрипт. Теперь относительный путь к файлу будет выглядеть так:

script src="js/ex1.js">script>

то есть, он прописывается по тем же правилам, что и пути, например, у тега img. Часто так подключается набор JavaScript программ в разделе head, необходимых для корректной работы HTML-документа. И, если нужно подключить несколько разных скриптов, то повторяют тег script:

script src="js/ex1.js">script> script src="js/ex2.js">script>

В качестве примера посмотрим на сайт htmlbook.ru здесь в разделе head именно так подключается внешний скрипт. В чем преимущество использования внешних скриптов? Во-первых, удобство исправления программ и внесения в них изменений. Если сайт состоит из большого числа HTML-страниц и каждая подключает определенный скрипт, то для изменения функциональности будет достаточно внести изменение в один файл – внешнюю программу на JavaScript и все страницы автоматически начнут работать по новому. Во-вторых, многие браузеры по умолчанию кэшируют загруженную информацию, то есть, скрипт, загруженный с сайта единожды не загружается повторно для других его страниц, а берется из кэша браузера. Это может заметно ускорять загрузку страниц. И последнее, о чем следует сказать вначале и что сильно упрощает жизнь фронт-енд программиста – это консоль разработчика. В большинстве браузеров она открывается нажатием клавиши F12, в опере следует нажать комбинацию клавиш Ctrl+Shift+I. Здесь будут высвечиваться возможные ошибки в скриптах, а также выводимая ими информация. Вы только что видели как мы выводили информацию об объекте div. Давайте теперь, для примера, запишем программу с ошибкой:

let o = document.getElementById('id_div'); console.log(obj);

Здесь мы пытаемся на консоль вывести несуществующий объект obj, о чем и сообщается в консоле. Этим инструментом браузера мы будем активно пользоваться для отладки наших программ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *