کادر گفتگوی بستن کنترل‌های پلاتفرم

ویژگی‌های وب: <dialog closedby>

وقتی کادر گفتگوی مدال باز است، کاربران انتظار دارند از کنترل‌های آشنا برای بستن آن استفاده کنند: فشار دادن کلید Esc در صفحه‌کلید، استفاده از دکمه یا اشاره برگشت در پلاتفرم‌های تلفن همراه، یا اشاره بستن با فناوری‌های کمکی.

وقتی عنصر <dialog> برای اولین‌بار معرفی شد، می‌شد آن را با کلید Esc رد کرد، اما با دیگر کنترل‌های پلاتفرم مانند دکمه/ اشاره برگشتن در تلفن همراه نمی‌شد این کار را انجام داد. با افزودن مشخصه closedby برای عناصر <dialog>، رفتار گسترش‌یافته پاسخ دادن به کنترل‌های خاص پلاتفرم بیشتر برای درخواست‌های بستن برای عناصر <dialog> که در حالت مدال باز می‌شوند (یعنی وقتی به‌طور امری با روش showModal() عنصر <dialog> در جاوا اسکریپت یا به‌طور اعلانی با فرمان فراخواننده show-modal باز می‌شوند) اعمال شده است. بنابراین، اگر توسعه‌دهندگان ازقبل از عنصر <dialog> استفاده می‌کنند، نیازی به ایجاد تغییر خاصی ندارند.

<!-- MANDATORY: must be opened with either `showModal()` with JavaScript or the `show-modal` command using declarative command invokers in order respond to close requests including platform-specific controls. -->
<dialog aria-labelledby="example">
  <h1 id="example">Example</h1>
  <p>Modal that can be dismissed with close requests.</p>
</dialog>

وقتی کادر گفتگویی بدون مشخصه closedby در حالت مدال باز می‌شود، به درخواست‌های بستن پاسخ می‌دهد، درست مانند زمانی که مشخصه closedby به‌طور صریح روی closerequest تنظیم شده باشد.

<!-- This is unnecessary as it is the default behavior for modal dialogs -->
<dialog closedby="closerequest" aria-labelledby="example">
  <h1 id="example">Example</h1>
  <p>Modal that can be dismissed with close requests.</p>
</dialog>

اگر رفتار «رد کردن با ضربه زدن در خارج از کادر» را هم می‌خواهید، باید closedby را روی any تنظیم کنید:

<dialog closedby="any" aria-labelledby="example">
  <h1 id="example">Example</h1>
  <p>Modal that can be dismissed with close requests and light dismiss.</p>
</dialog>

راهبردهای جایگزین

<dialog> عناصری که در حالت مدال باز می‌شوند را می‌توان با Esc رد کرد، بنابراین نیازی به بازگشت نیست. هیچ راه خوبی برای اجرای درخواست‌های بستن از دکمه/ اشاره‌های برگشتن در تلفن همراه وجود ندارد، بنابراین ساده‌تر است که این ویژگی را به‌عنوان یک ارتقای پیش‌رو بپذیریم، به‌ویژه با توجه به اینکه راه‌های فراگیر دیگری برای رد کردن کادر گفتگوی مدال وجود دارد. به‌طور مشابه، رفتار رد کردن با لمس کردن برای عنصر <dialog> بااستفاده از closedby="any" می‌تواند به‌عنوان ارتقای پیش‌رو درنظر گرفته شود.