← 返回首页
HTMLDialogElement: requestClose() method - Web APIs | MDN

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 close() 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.

In this article

Syntax

js
requestClose() requestClose(returnValue)

Parameters

returnValue Optional

A string representing an updated value for the HTMLDialogElement.returnValue of the dialog.

Return value

None (undefined).

Examples

Using requestClose()

The following example shows a button that, when clicked, opens a <dialog> using the showModal() method. From there you can click the either Close button to call the requestClose() method and close the dialog.

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

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>
<pre id="log"></pre>
#log { height: 170px; overflow: scroll; padding: 0.5rem; border: 1px solid black; }
const logElement = document.getElementById("log"); function log(text) { logElement.innerText = `${logElement.innerText}${text}\n`; logElement.scrollTop = logElement.scrollHeight; }
js
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"); // Open 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

Enable JavaScript to view this browser compatibility table.

See also