JavaRush /Курсы /Модуль 1: Web Core /Элементы для разметки диалогов

Элементы для разметки диалогов

Модуль 1: Web Core
6 уровень , 3 лекция
Открыта

4.1 Элемент <dialog>

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

Элемент <dialog> представляет собой диалоговое окно или другое интерактивное окно. Он может быть как модальным, так и немодальным. Внутри элемента <dialog> можно размещать любой HTML-контент, такой как текст, формы, кнопки и т. д.

Синтаксис:

HTML
    
      <dialog>
        <!-- Содержимое диалогового окна -->
      </dialog>
    
  
HTML
    
      <div style="min-height: 200px;">
        <dialog id="favSuperHeroDialog">
          <form method="dialog">
            <div>
              <label for="favSuperHero">Любимый супергерой:</label>
              <select id="favSuperHero" name="favSuperHero">
                <option></option>
                <option>Капитан Америка</option>
                <option>Железный Человек</option>
                <option>Халк</option>
              </select>
            </div>
            <div>
              <button type="reset" id="cancel">Сбросить</button>
              <button type="submit">Подтвердить</button>
            </div>
          </form>
        </dialog>
        <button id="updateDetails">Отрыть диалоговое окно</button>
      </div>
    
  
HTML
    
      <dialog id="favSuperHeroDialog">
        <form method="dialog">
          <div>
            <label for="favSuperHero">Любимый супергерой:</label>
            <select id="favSuperHero" name="favSuperHero">
              <option></option>
              <option>Капитан Америка</option>
              <option>Железный Человек</option>
              <option>Халк</option>
            </select>
          </div>
          <div>
            <button type="reset" id="cancel">Сбросить</button>
            <button type="submit">Подтвердить</button>
          </div>
        </form>
      </dialog>
      <button id="updateDetails">Отрыть диалоговое окно</button>
    
  
JavaScript
    
// Получаем кнопки и диалог из DOM
const updateButton = document.getElementById("updateDetails");
const cancelButton = document.getElementById("cancel");
const dialog = document.getElementById("favSuperHeroDialog");
dialog.returnValue = "favSuperHero";

// Функция проверки состояния диалога (открыт/закрыт)
function openCheck(dialog) {
 if (dialog.open) {
   console.log("Диалог начат");
 } else {
   console.log("Диалог завершен");
 }
}

// Открываем диалог по клику на кнопку Update
updateButton.addEventListener("click", () => {
 dialog.showModal();
 openCheck(dialog);
});

// Закрываем диалог по клику на кнопку Cancel
cancelButton.addEventListener("click", () => {
 dialog.close();
 openCheck(dialog);
});
    
  

4.2 Атрибуты и методы <dialog>

Атрибут open определяет, является ли диалоговое окно открытым. Если этот атрибут присутствует, диалог отображается на странице.

Пример использования атрибута open:

HTML
    
      <dialog open>
        <p>Это открытое диалоговое окно.</p>
      </dialog>
    
  

Атрибут returnValue позволяет задавать значение, которое вернется при закрытии диалогового окна. Это свойство полезно для получения результата взаимодействия пользователя с диалогом.

HTML
    
      <dialog returnvalue=”5”>
        <p>Это открытое диалоговое окно.</p>
      </dialog>
    
  

Метод show():

Открывает диалоговое окно без модального режима.

JavaScript
    
      dialog.show();
    
  

Метод showModal():

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

JavaScript
    
      dialog.showModal();
    
  

Метод close():

Закрывает диалоговое окно.

JavaScript
    
      dialog.close();
    
  

4.3 События <dialog>

Событие close:

Событие, которое происходит при закрытии диалогового окна.

HTML
    
      <div style="min-height: 200px">
        <dialog id="myDialog">
          <form method="dialog">
            <p>Нажмите кнопку "Отмена" или "Ок" для возврата значения</p>
            <div class="dialog-buttons">
              <button value="cancel">Отмена</button>
              <button value="confirm">ОК</button>
            </div>
          </form>
        </dialog>
        <button id="showDialog">Показать диалоговое окно</button>
      </div>
    
  
HTML
    
      <dialog id="myDialog">
        <form method="dialog">
          <p>Нажмите кнопку "Отмена" или "Ок" для возврата значения</p>
          <div class="dialog-buttons">
            <button value="cancel">Отмена</button>
            <button value="confirm">ОК</button>
          </div>
        </form>
      </dialog>
      <button id="showDialog">Показать диалоговое окно</button>
    
  
JavaScript
    
// Получаем DOM элементы
const dialog = document.getElementById('myDialog');
const showDialogButton = document.getElementById('showDialog');

// Открытие модального окна
showDialogButton.addEventListener('click', () => {
 dialog.showModal();
});

// При закрытии показываем returnValue
dialog.addEventListener('close', () => {
 alert(`Диалог закрыт с возвратом значения: ${dialog.returnValue}`);
});
    
  

Событие cancel:

Событие, которое происходит при отмене диалогового окна (например, при нажатии клавиши Esc).

HTML
    
      <div style="min-height: 200px">
        <dialog id="myDialog">
          <form method="dialog">
            <p>Нажмите клавишу "Esc", чтобы увидеть результат</p>
          </form>
        </dialog>
        <button id="showDialog">Открыть диалоговое окно</button>
      </div>
    
  
HTML
    
      <dialog id="myDialog">
        <form method="dialog">
          <p>Нажмите клавишу "Esc", чтобы увидеть результат</p>
        </form>
      </dialog>
      <button id="showDialog">Открыть диалоговое окно</button>
    
  
JavaScript
    
// Получаем DOM элементы
const dialog = document.getElementById('myDialog');
const showDialogButton = document.getElementById('showDialog');
const closeButton = document.getElementById('closeButton');

// Открытие диалога
showDialogButton.addEventListener("click", () => {
 dialog.showModal();
});

// Обработка отмены диалога (ESC или клик вне окна)
dialog.addEventListener('cancel', () => {
 alert('Dialog was cancelled');
});
    
  
1
Задача
Модуль 1: Web Core, 6 уровень, 3 лекция
Недоступна
Простое диалоговое окно
Простое диалоговое окно
1
Задача
Модуль 1: Web Core, 6 уровень, 3 лекция
Недоступна
Атрибуты <dialog>
Атрибуты <dialog>
Комментарии (14)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Олег Сычев Уровень 12
26 августа 2025
Вообще, Я думаю, что надо было сам курс начинать с javaScript и мб каких-то самых основ html. Ибо, Я хоть знаю Java - все равно, без толковых объяснений - сложно для понимания. А когда человек вообще не имел дел с айти и это его первые шаги... Это реально сложно. Опять же, навыки гугления - это хорошо и в айти без этого никуда, но когда человек делает только первые шаги... У него их может и не быть. И будет ступор.
Top_Gun_Mos Уровень 10
9 июля 2025
Это какой-то ужас. Который раз уже попадаются JS код. Зачем их добавлять, если я прохожу пока только верстку?
Foxia_#3533149 Уровень 13
8 июля 2025
странно добавлять javascript, если его еще не изучали, просто какое то тупое копирование кода ? ка и все остальные задания
Андрей Полищук Уровень 23
9 мая 2025
// Обработка отмены диалога (ESC или клик вне окна) - Будет работать только ESC. dialog.addEventListener('cancel', () => { alert('Dialog was cancelled');
Vadim Makarenko Уровень 42
2 февраля 2025
Замечание по задачам: какое отношение они имеют к данной лекции? Понятно, что JavaScript - очень важный инструмент для работы с событиями, но предполагается, что начинающие изучать HTML его не знают. То немногое, что в лекциях было, не даёт возможности полноценно создавать скрипты. Поэтому подобные задания только раздражают. Да, подробные инструкции всё же позволяют с ними справиться, но лишь показывают, что пока что без этих подсказок ученик - полный ноль. Да и диалоговые окна мы по существу ещё не начали изучать, только селекторы CSS, которые применимы к чему угодно.
Vadim Makarenko Уровень 42
1 февраля 2025
Замечание ко всему курсу и к этой лекции в частности: почему общая преамбула ко всей лекции заносится каждый раз внутрь первого раздела? Почему о значении термина веб-скраппинг нужно догадываться по косвенным пояснениям? Может стоит сначала дать его определение, пояснить для чего это нужно, можно и с парсингом сравнить. А потом уже углубляться в частности?
Anastassia Žutškina Уровень 8
14 февраля 2025
Мне как человеку с ноль background в IT, так как курс заявлен для ( с нуля ) . действительно из-за такого странного составления лекций и переодичностью, очень сложно, учеба как-будто вслепую происходит
14 февраля 2025
Если бы ты читал политику этого курса о которой тебе постоянно толдычат то вопросов небыло бы! Тебе дают инфу частично - чтобы твои мозги шевелились!!! затем к предыдущей инфе тебе дают развертку, а только потом заполняют пробелы!!! Логически прикинь зачем так делается... И это далеко не единственный курс где применяется эта практика, если ты идешь в область it будь говото 24/7 держать руку на гугле чтобы найти то чего не понимаешь, а понимать ты будешь мало чего!!! Учись искать информацию, в тебе создатели курса развивают этот навык. Если ты сравниваешь веб скрапинг с парсингом то ты видать далеко пойдешь)) это как сравнить скальпель и хирурга))).. Мужик видно же не 5 лет, освой то чего не понимаешь, потом когда дойдешь до места где тебе это обьяснят просто закрепишь свои знания, а еще полезно не зацикливаться на одном курсе а в параллель идти по нескольким, и прежде чем начинать посмотри ютуб там много курсов, потрать 5 часов чтобы вцелом понять что к чему, а потом переходи к углубленному изучению и практике...
14 февраля 2025
Могу посоветовать не прыгать в огонь а более структурированно подойти к обучению.. Если интересно, напишите мне в личку, я подскажу с чего начать и чем продолжить..
Anastasia Уровень 38
11 марта 2025
Ну, про такой подход к обучению написано где-то на стартовых страницах JavaRush, поэтому это не неожиданный сценарий обучения. Лично мне за это и нравится JR - в каждом уроке попадается инфа, в которую сложно врубиться, что-то хочется дополнительно почитать прям сразу, чтоб досканально разобраться на месте, а что-то пропускаю типа "в общих чертах понятно, но не понятно", т.к. знаю, что в дальнейшем эта тема будет раскрыта и запомнится ещё лучше - "ааа, так вот что я делал 10 тем назад!". А вот очень структурная и до мелочей разложенная по полочкам инфа, которая даётся на блюдечке, для меня абсолютно неэффективна - пока читаю - понятно, а потом фиг вспомню, и вряд ли без подсказок удастся применить.)) Но каждому подходит разный формат обучения, и как нам повезло, сейчас так много вариантов, на любой запрос!)
Foxia_#3533149 Уровень 13
8 июля 2025
Александр, что вы ругаетесь? как курс заявлен для ( с нуля ). Я давно работаю в IT, но я тут кроме как почитать ничего не получаю, как шевелить мозгами, если я тупо копи пейстом занимаюсь, а почитать я могу бесплатно и без курса. моя цель тут практика, а я ее тут не наблюдаю.
Максим Уровень 1
20 июля 2025
Тут дается практика только для закрепления знания, следом, каждый модуль - дается проект, который пишется с нуля (не копипаст), тут нормально с обучением. Если хотите практикой заниматься, в Интернете полно работ от дизайнеров в фигмах, чтобы закреплять навыки верстки, вбиваете в поиск "Макеты в фигме" и вуаля, открывается большой спектр макетов, на которых легко можно попрактиковаться. А практика, как Вы говорите, тут присутствует, просто нужно иметь грань между учебной практикой и реальной, которую Вы, как сотрудник IT, не понимаете. Плюс, для повышения скилла, не надо копипастить из примеров, своей головой думайте.
Foxia_#3533149 Уровень 13
20 июля 2025
ну теперь все понятно , буду думать своей головой., очень полезный совет. я просто купила курс что бы почитать, я справлюсь, спс.
Anonymous #3458308 Уровень 6
25 января 2025
.price { color: red; } HTML

Цена: $99

результат не отображается