<dialog open=""> <h2>Title</h2> <p>Content</p> </dialog>
var dialog = document.getElementById("dialog");
// 假设页面中,有一个id=dialog的dialog标签
// 关闭dialog
dialog.close();
// 以toast的形式显示dialog
dialog.show();
// 以模态框的形式显示dialog
dialog.showModal();
// dialog.close()调用时传入的参数值
dialog.returnVlaue;
// dialog的显示状态
dialog.open; var dialog = document.getElementById("dialog");
// 假设页面中,有一个id=dialog的dialog标签
// 当调用close方法时
dialog.onclose = function(){};
// 当在pc端按下esc按键时。不过在chrome版本之后,好像不管用了。
dialog.oncancel = function(){}; 现在来看一个示例: dialog 事件示例展示。
也有几个问题,这里来列举一下:
1: 只要调用 dialog.close() 来隐藏的 dialog ,才能触发 onclose 事件。
2: cancel 事件触发之后,必定会继续触发 close 事件, chrome64 版本之后, cancel 的触发,不是 esc 按键了。
3: 如果有多种关闭 dialog 的按钮,那么在每次调用 close 的时候传入不同的值,在 close 事件的回调里面,使用 returnVlaue 的取值,来判断,是哪个按钮用来触发的关闭事件。
5. 其他
前面把 dialog 的一些表现进了说明,可能有不全,不准确的情况,也可能随着时间的推移,有更新的特性出现,欢迎提出补充。
在看前面的示例时,我们也看到了一下不足的地方,比如:样式特别丑,关于这点,我们可以完全使用CSS把样式reset掉,不影响语义,和其他的任何东西,放心重构就可以了。
这里只是想说一下, dialog 的表现,所以就不做这些了。
6. 总结
dialog 毕竟属于弹窗对话的语义化标签,并且有一些独有的优势(比如 webview 层级的高度),虽然现在只是chrome支持,但对于以后的使用,依然是很看好的,甚至现在也可以自己兼容一下,在其他浏览器,自己去实现一套 dialog 的机制(也许已经有这套实现方案了,这里就不去找了)。
相关推荐:
html <dialog>标签的使用与定义
谈谈Dialog的现状、前景与机遇
jQuery UI 使用之dialog的使用教程
以上就是html5 dialog使用详解的详细内容,更多请关注Gxl网其它相关文章!