HTMLDialogElement - 提供了操作 <dialog> 元素的方法
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
HTMLDialogElement
接口提供了操作 <dialog>
元素的方法。它继承了 HTMLElement
接口的属性和方法。
属性
从其父接口 HTMLElement
继承了属性。
HTMLDialogElement.open
一个 Boolean
,表示 open
HTML 属性,指示对话框是否可用于交互。
HTMLDialogElement.returnValue
一个 DOMString
,用于设置或返回对话框的返回值。
方法
从其父接口 HTMLElement
继承了方法。
HTMLDialogElement.close()
关闭对话框。可以传入一个 DOMString
可以作为参数,从而更新对话框的 returnValue
。
HTMLDialogElement.show()
无模式显示对话框,即仍然允许与对话框外部的内容进行交互。
HTMLDialogElement.showModal()
在可能出现的任何其他对话框的上方,以对话框形式显示对话框。对话框外的交互将被阻止。
事件
close
对话框关闭时触发。也可以通过 onclose
属性处理。
实例
以下实例显示了一个简单的按钮,单击该按钮可通过 HTMLDialogElement.showModal()
函数打开一个包含表单的 <dialog>
。在这里,您可以单击 取消 按钮以关闭对话框(通过 HTMLDialogElement.close()
函数),或通过 提交 按钮提交表单。
<!-- 简单弹出对话框,包含一个表单 -->
<dialog id="favDialog">
<form method="dialog">
<section>
<p><label for="favAnimal">最喜欢的动物:</label>
<select id="favAnimal" name="favAnimal">
<option></option>
<option>盐水虾</option>
<option>小熊猫</option>
<option>蜘蛛猴</option>
</select></p>
</section>
<menu>
<button id="cancel" type="reset">取消</button>
<button type="submit">提交</button>
</menu>
</form>
</dialog>
<menu>
<button id="updateDetails">更新详情</button>
</menu>
<script>
(function() {
var updateButton = document.getElementById('updateDetails');
var cancelButton = document.getElementById('cancel');
var dialog = document.getElementById('favDialog');
dialog.returnValue = 'favAnimal';
function openCheck(dialog) {
if(dialog.open) {
console.log('打开对话框');
} else {
console.log('关闭对话框');
}
}
// 点击按钮将打开一个模式对话框
updateButton.addEventListener('click', function() {
dialog.showModal();
openCheck(dialog);
});
// 点击表单取消按钮关闭对话框
cancelButton.addEventListener('click', function() {
dialog.close('animalNotChosen');
openCheck(dialog);
});
})();
</script>
注意:您可以在 GitHub 上查看该实例 htmldialogelement-basic(查看在线演示)。
规范
规范 | 状态 | 备注 |
---|---|---|
HTML Living Standard HTMLDialogElement 的定义 |
现行的标准 | |
HTML 5.2 |
推荐 | 初始定义 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 37 | 79 | 531 | 不支持 | 支持 | 不支持 |
cancel 事件 | 支持 | 79 | 不支持 | 不支持 | 未知 | 不支持 |
close | 37 | 79 | 531 | 不支持 | 支持 | 不支持 |
close 事件 | 支持 | 79 | 不支持 | 不支持 | 未知 | 不支持 |
open | 37 | 79 | 531 | 不支持 | 支持 | 不支持 |
returnValue | 37 | 79 | 531 | 不支持 | 支持 | 不支持 |
show | 37 | 79 | 531 | 不支持 | 支持 | 不支持 |
showModal | 37 | 79 | 531 | 不支持 | 支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 不支持 | 未知 | 531 | 未知 | 不支持 | 不支持 |
cancel 事件 | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
close | 不支持 | 不支持 | 未知 | 531 | 未知 | 不支持 | 不支持 |
close 事件 | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
open | 不支持 | 不支持 | 未知 | 531 | 未知 | 不支持 | 不支持 |
returnValue | 不支持 | 不支持 | 未知 | 531 | 未知 | 不支持 | 不支持 |
show | 不支持 | 不支持 | 未知 | 531 | 未知 | 不支持 | 不支持 |
showModal | 不支持 | 不支持 | 未知 | 531 | 未知 | 不支持 | 不支持 |
1. 请参阅 bug 840640。
相关链接
- 实现该接口的 HTML 元素:
<dialog>
。