对话框是添加到应用程序中的常见组件,无论是在网络应用程序中还是在本机应用程序中。传统上,没有一种在网络上实现这些的标准方法,导致许多临时实现在不同的网络应用程序中表现不一致。通常,由于实现的复杂性,对话框中会缺少常见的预期功能。
但是,网络浏览器现在提供标准对话框元素。
原生对话框元素简化了对话框、模式和其他类型非模式对话框的实现。它通过实现已内置于浏览器中的对话框所需的许多功能来实现此目的。
这很有帮助,因为它通过确保满足用户对交互的期望来减轻开发人员在使应用程序可访问时的负担,并且它还可以总体上简化对话框的实现。
使用新的
<dialog> <p>However, adding the dialog alone won’t do anything to the page. It will show up only once you call the .showModal() method against it.<br> </p> <pre class="brush:php;toolbar:false">document.getElementById('example-dialog').showModal();
然后,如果你想关闭它,你可以调用对话框上的 .close() 方法,或者按转义键关闭它,就像大多数其他模式一样。另外,请注意背景如何使页面的其余部分变暗并阻止您与其交互。整齐!
在让所有用户都可以访问您的 Web 应用程序时,正确处理焦点非常重要。通常,在显示它们时,您必须将当前焦点移至活动对话框,但对话框元素已为您完成。
默认情况下,焦点将设置在对话框中的第一个可聚焦元素上。您可以选择通过在希望焦点开始的元素上设置 autofocus 属性来更改哪个元素首先接收焦点,如前面的示例所示,该属性被添加到关闭
使用 .showModal() 方法打开对话框也会隐式地将对话框 ARIA 角色添加到对话框元素。这有助于屏幕阅读器了解模式已经出现以及屏幕,以便它可以采取相应的行动。
表单也可以添加到对话框中,甚至还有一个特殊的方法值。如果添加