【问题标题】:Dialog element 'open' event对话框元素“打开”事件
【发布时间】:2018-03-06 02:37:29
【问题描述】:

对于对话框元素<dialog>,是否有某种“打开”事件在显示时触发,无论是正常还是模态?

The spec 对此并不完全清楚,MDN 只是列出了一堆继承的事件。

close 事件确实触发了,但我似乎无法获得任何类型的 open 事件。

示例 HTML:

<dialog>
  <h1>Oh hey, a dialog...</h1>
</dialog>

在 JavaScript 中:

document.querySelector('dialog').addEventListener('open', (e) => {
  console.log(e);
});
document.querySelector('dialog').showModal();

【问题讨论】:

  • 只是猜测尝试show事件?
  • @Viney 不幸的是,该事件也没有触发。

标签: javascript html dialog modal-dialog html-5.2


【解决方案1】:

不,没有open 事件。

对话框有一个open 属性,可以确定它是否打开,但不幸的是,当这个转换时没有事件。

【讨论】:

  • 目前除了通过 javascript (related issue) 之外没有其他方法可以打开它,所以这里没有发送事件是有道理的。但是正如您所指出的,open 属性发生了变化,但您没有说的是这个 IDL 属性反映了一个 HTML 属性,这是可观察到的:jsfiddle.net/vmj8d79q 另外,我认为应该有一个 focus 触发事件,但目前似乎没有任何实现可以做到这一点,我可能只是误读了规范。
  • @Kaiido 您的 MutationObserver 方法是一个很好的解决方法!请张贴作为答案,以便我接受。谢谢,一如既往。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 2018-03-23
  • 2013-05-12
相关资源
最近更新 更多