Description
https://html.spec.whatwg.org/#the-dialog-element:
Removing the open attribute will usually hide the dialog. However, doing so has a number of strange additional consequences:
- The close event will not be fired.
- The close() method, and any user-agent provided cancelation interface, will no longer be able to close the dialog.
- If the dialog was shown using its showModal() method, the Document will still be blocked.
For these reasons, it is generally better to never remove the open attribute manually. Instead, use the close() method to close the dialog, or the hidden attribute to hide it.
This seems very odd. The "leaves the document blocked" part in particular. That seems that it's super-easy to leave the user without being able to interact with the website by doing dialog.showModal();
then dialog.removeAttribute("close");
. I guess the same is true of a mispositioned dialog though? However removing the open
attribute seems like a legit mistake someone could make and it just leaves the browser in an inconsistent state.
Should we implicitly close the dialog when removing open
? I think that's what details
does effectively. And if so should we implicitly call show()
when adding the attribute?
cc @annevk