HTMLDialogElement: requestClose() method
Baseline
2025
Newly available
Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
The requestClose() method of the HTMLDialogElement interface requests to close the <dialog>.
An optional string may be passed as an argument, updating the returnValue of the dialog.
This method differs from the close() method in that it fires a cancel event before firing the close event.
Authors can call Event.preventDefault() in the handler for the cancel event to prevent the dialog from closing.
This method exposes the same behavior as the dialog's internal close watcher.
Syntax
requestClose()
requestClose(returnValue)
Parameters
returnValueOptional-
A string representing an updated value for the
HTMLDialogElement.returnValueof the dialog.
Return value
None (undefined).
Examples
>Using requestClose()
The following example shows a button that, when clicked, opens a <dialog> via the showModal() method.
From there you can click the either Close button to close the dialog (via the requestClose() method).
The Close button closes the dialog without a returnValue, while the Close w/ return value button closes the dialog with a returnValue.
Preventing the dialog from closing is demonstrated with a checkbox.
HTML
<dialog id="dialog">
<div>
<label><input type="checkbox" id="prevent-close" /> Cancel close</label>
</div>
<button type="button" id="close">Close</button>
<button type="button" id="close-w-value">Close w/ return value</button>
</dialog>
<button id="open">Open dialog</button>
const dialog = document.getElementById("dialog");
const openButton = document.getElementById("open");
const closeButton = document.getElementById("close");
const closeWithValueButton = document.getElementById("close-w-value");
const preventCloseInput = document.getElementById("prevent-close");
// Update button opens a modal dialog
openButton.addEventListener("click", () => {
// Reset the return value
dialog.returnValue = "";
// Show the dialog
dialog.showModal();
});
// Close button closes the dialog box
closeButton.addEventListener("click", () => {
dialog.requestClose();
});
// Close button closes the dialog box with a return value
closeWithValueButton.addEventListener("click", () => {
dialog.requestClose("some value");
});
// Fired when requestClose() is called
// Prevent the dialog from closing by calling event.preventDefault()
dialog.addEventListener("cancel", (event) => {
if (preventCloseInput.checked) {
log("Dialog close cancelled");
event.preventDefault();
}
});
// cancel event is not prevented, dialog will close
dialog.addEventListener("close", () => {
log(`Dialog closed. Return value: "${dialog.returnValue}"`);
});
Result
Specifications
| Specification |
|---|
| HTML> # dom-dialog-requestclose> |
Browser compatibility
See also
- The HTML element implementing this interface:
<dialog>.