HTMLDialogElement: phương thức requestClose()

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.

Phương thức requestClose() của giao diện HTMLDialogElement yêu cầu đóng <dialog>. Có thể truyền một chuỗi tùy chọn làm đối số, cập nhật returnValue của hộp thoại.

Phương thức này khác với close() ở chỗ nó kích hoạt sự kiện cancel trước khi kích hoạt sự kiện close. Tác giả có thể gọi Event.preventDefault() trong trình xử lý cho sự kiện cancel để ngăn hộp thoại đóng.

Phương thức này phơi bày cùng hành vi với trình theo dõi đóng nội bộ của hộp thoại.

Cú pháp

js
requestClose()
requestClose(returnValue)

Tham số

returnValue Optional

Một chuỗi đại diện cho giá trị cập nhật cho HTMLDialogElement.returnValue của hộp thoại.

Giá trị trả về

Không có (undefined).

Ví dụ

Sử dụng requestClose()

Ví dụ sau đây hiển thị một nút bấm, khi được nhấp vào, sẽ mở một <dialog> bằng phương thức showModal(). Từ đó bạn có thể nhấp vào nút Đóng để gọi phương thức requestClose() và đóng hộp thoại.

Nút Đóng đóng hộp thoại mà không có returnValue, trong khi nút Đóng kèm giá trị trả về đóng hộp thoại với một returnValue.

Việc ngăn hộp thoại đóng được minh họa bằng một hộp kiểm.

HTML

html
<dialog id="dialog">
  <div>
    <label><input type="checkbox" id="prevent-close" /> Hủy đóng</label>
  </div>
  <button type="button" id="close">Đóng</button>
  <button type="button" id="close-w-value">Đóng kèm giá trị trả về</button>
</dialog>

<button id="open">Mở hộp thoại</button>
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");

// Nút mở mở một hộp thoại modal
openButton.addEventListener("click", () => {
  // Đặt lại giá trị trả về
  dialog.returnValue = "";
  // Hiển thị hộp thoại
  dialog.showModal();
});

// Nút đóng đóng hộp thoại
closeButton.addEventListener("click", () => {
  dialog.requestClose();
});

// Nút đóng đóng hộp thoại với giá trị trả về
closeWithValueButton.addEventListener("click", () => {
  dialog.requestClose("some value");
});

// Được kích hoạt khi requestClose() được gọi
// Ngăn hộp thoại đóng bằng cách gọi event.preventDefault()
dialog.addEventListener("cancel", (event) => {
  if (preventCloseInput.checked) {
    log("Đã hủy đóng hộp thoại");
    event.preventDefault();
  }
});

// Sự kiện cancel không bị ngăn, hộp thoại sẽ đóng
dialog.addEventListener("close", () => {
  log(`Hộp thoại đã đóng. Giá trị trả về: "${dialog.returnValue}"`);
});

Kết quả

Đặc tả kỹ thuật

Thông số kỹ thuật
HTML
# dom-dialog-requestclose

Tương thích trình duyệt

Xem thêm