← Back to HTML Course | Chapter 8: Modern HTML & Components | Lesson 6 of 10

HTML Dialog Element

सोचिए आप किसी वेबसाइट पर फॉर्म भर रहे हैं और अचानक एक ज़रूरी मैसेज पॉप-अप बॉक्स स्क्रीन पर आ जाता है, जो आपसे आपका ईमेल एड्रेस कन्फर्म करने को कहता है। यह पेज के बाकी हिस्से को लॉक कर देता है, और आपको कुछ और करने से पहले Accept या Cancel पर क्लिक करने पर मजबूर करता है। पहले, डेवलपर्स को ऐसे पॉप-अप डायलॉग बॉक्स बनाने के लिए कॉम्प्लेक्स CSS और JavaScript कोड लिखना पड़ता था। HTML dialog एलिमेंट यह समस्या हल करता है। यह एक नेटिव, बिल्ट-इन पॉप-अप और modal window एलिमेंट है। सिंपल टैग्स इस्तेमाल करके, आप पूरी तरह इंटरैक्टिव, accessible पॉप-अप विंडोज़ बना सकते हैं, जो कीबोर्ड फोकस और स्क्रीन पठनीयता को नेटिव रूप से हैंडल करती हैं।
Syntax
markup
<dialog id="id">
  Content
  <button onclick="this.closest('dialog').close()">Close</button>
</dialog>
<script>
  document.getElementById("id").showModal();
</script>

dialog एलिमेंट

dialog टैग आपके वेबपेज पर एक नेटिव, पॉप-अप modal डायलॉग बॉक्स परिभाषित करता है। यह एक साधारण कंटेनर एलिमेंट है जो डिफ़ॉल्ट रूप से तब तक छुपा रहता है जब तक इसे नेटिव JavaScript मेथड्स या open एट्रिब्यूट से खोला न जाए।

Note:
  • नेटिव, एक्सेसिबल पॉप-अप विंडोज़ और modal अलर्ट बॉक्सेस बनाने के लिए dialog टैग का उपयोग करें।
  • Accepted attributes:
  • open — boolean; shows the dialog
  • Global attributes apply (id, class)
  • method="dialog" on a form inside closes it
Warning: अपने dialog टैग में मैन्युअली open एट्रिब्यूट जोड़ने से यह non-modal लेआउट के रूप में खुलेगा, जो बैकग्राउंड फोकस को लॉक नहीं करता।

उदाहरण: The dialog Element

markup
<dialog>
  <p>This is a modal dialog</p>
</dialog>

Dialogs को खोलना और बंद करना

अपने dialog बॉक्स के साथ इंटरैक्ट करने के लिए, आप नेटिव JavaScript मेथड्स का उपयोग करते हैं: show() इसे एक साधारण पॉप-अप के रूप में खोलता है, showModal() इसे एक modal के रूप में खोलता है (बैकग्राउंड फोकस को लॉक करते हुए), और close() इसे साफ तरीके से बंद कर देता है।

Note:
  • बैकग्राउंड फोकस को लॉक करने और स्क्रीन-रीडर नेविगेशन में मदद के लिए हमेशा अपने dialogs को showModal() से खोलें।
  • Accepted values:
  • open — boolean attribute; non-modal display
  • show() — open non-modal
  • showModal() — open modal
  • close(returnValue) — close
Warning: अपने dialogs को दिखाने के लिए मैन्युअली स्टाइल्स अपडेट करने से बचें, क्योंकि इससे नेटिव modal बिहेवियर बायपास हो जाएगा।

उदाहरण: Opening and Closing Dialogs

markup
<dialog id="myDialog">
  <button onclick="document.getElementById('myDialog').close()">Close</button>
</dialog>
<button onclick="document.getElementById('myDialog').showModal()">Open</button>

Backdrop Overlay को कस्टमाइज़ करना

जब आप showModal() का उपयोग करके किसी dialog बॉक्स को modal के रूप में खोलते हैं, तो ब्राउज़र अपने-आप उसके पीछे एक गहरा backdrop overlay दिखाता है, जो modal को मुख्य पेज से लॉक करके अलग कर देता है।

आप CSS ::backdrop pseudo-element का उपयोग करके इस backdrop को आसानी से कस्टमाइज़ कर सकते हैं।

Note: अपने modal को मुख्य पेज से अलग दिखाने में मदद के लिए एक अर्ध-पारदर्शी गहरे रंग का backdrop इस्तेमाल करें।
Warning: ::backdrop pseudo-element तभी दिखता है जब आपका dialog showModal() मेथड से खोला जाए।

उदाहरण: Customizing the Backdrop Overlay

markup
<dialog id="myDialog">Content</dialog>
<style>
  dialog::backdrop {
    background: rgba(0, 0, 0, 0.6);
  }
</style>

कीबोर्ड फोकस मैनेज करना

नेटिव dialog बॉक्सेस में बिल्ट-इन कीबोर्ड नेविगेशन सपोर्ट होता है।

जब आप कोई modal dialog खोलते हैं, तो ब्राउज़र अपने-आप कर्सर फोकस को modal के अंदर रखता है और उसे वहीं लॉक कर देता है, ताकि कीबोर्ड यूज़र्स गलती से बैकग्राउंड लिंक्स पर नेविगेट न कर जाएँ।

Note: यूज़र्स नेटिव modal dialogs को अपने-आप बंद करने के लिए Escape की दबा सकते हैं।
Warning: नेटिव कीबोर्ड फोकस लॉक को बायपास करने के लिए कभी भी स्क्रिप्ट ट्रिक्स इस्तेमाल न करें, क्योंकि यह accessibility मानकों का उल्लंघन करता है।

उदाहरण: Managing Keyboard Focus

markup
<dialog id="myDialog">
  <button>Focused automatically</button>
</dialog>
<script>
  document.getElementById('myDialog').showModal();
</script>

Dialogs के अंदर Form Integration

आप HTML forms को सीधे अपने dialog बॉक्सेस के अंदर इंटीग्रेट कर सकते हैं। फॉर्म के method एट्रिब्यूट को dialog सेट करके, फॉर्म सबमिशन अपने-आप dialog बॉक्स को बंद कर देगा, और बिना पेज रीलोड किए इनपुट वैल्यूज़ को सेव कर लेगा।

Note:
  • साफ-सुथरे, रिस्पॉन्सिव इन-डायलॉग कन्फर्मेशन फॉर्म्स बनाने के लिए dialog form मेथड का उपयोग करें।
  • Accepted values:
  • form method — dialog | get | post
  • method="dialog" — closes the dialog on submit; returnValue is the submit button value
Warning: form method="dialog" आपके सर्वर पर डेटा नहीं भेजेगा; सबमिशन पर वैल्यूज़ पढ़ने के लिए JavaScript इस्तेमाल करें।

उदाहरण: Form Integrations inside Dialogs

markup
<dialog id="myDialog">
  <form method="dialog">
    <button value="confirm">Confirm</button>
  </form>
</dialog>
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.