HTMLDialogElement: close() 方法

基线 2022

新可用

2022 年 3 月起,此功能在最新的设备和浏览器版本中均可使用。此功能可能在较旧的设备或浏览器中无法正常工作。

**close()** 方法是 HTMLDialogElement 接口的一种方法,用于关闭 <dialog>。可以将可选字符串作为参数传递,以更新对话框的 returnValue

语法

js
close()
close(returnValue)

参数

returnValue 可选

表示对话框的 HTMLDialogElement.returnValue 的更新值的字符串。

返回值

无 (undefined).

示例

以下示例显示了一个简单的按钮,单击该按钮会使用 showModal() 方法打开包含表单的 <dialog>。从那里,你可以单击X按钮关闭对话框(通过 HTMLDialogElement.close() 方法),或通过提交按钮提交表单。

html
<!-- Simple pop-up dialog box, containing a form -->
<dialog id="favDialog">
  <form method="dialog">
    <button id="close" aria-label="close" formnovalidate>X</button>
    <section>
      <p>
        <label for="favAnimal">Favorite animal:</label>
        <select id="favAnimal" name="favAnimal">
          <option></option>
          <option>Brine shrimp</option>
          <option>Red panda</option>
          <option>Spider monkey</option>
        </select>
      </p>
    </section>
    <menu>
      <button type="reset">Reset</button>
      <button type="submit">Confirm</button>
    </menu>
  </form>
</dialog>

<menu>
  <button id="updateDetails">Update details</button>
</menu>

<script>
  (() => {
    const updateButton = document.getElementById("updateDetails");
    const closeButton = document.getElementById("close");
    const dialog = document.getElementById("favDialog");
    dialog.returnValue = "favAnimal";

    function openCheck(dialog) {
      if (dialog.open) {
        console.log("Dialog open");
      } else {
        console.log("Dialog closed");
      }
    }

    // Update button opens a modal dialog
    updateButton.addEventListener("click", () => {
      dialog.showModal();
      openCheck(dialog);
    });

    // Form close button closes the dialog box
    closeButton.addEventListener("click", () => {
      dialog.close("animalNotChosen");
      openCheck(dialog);
    });
  })();
</script>

如果“X”按钮的 type="submit",则对话框将无需 JavaScript 即可关闭。如果 表单的方法为 dialog,则提交表单将关闭其嵌套的 <dialog>,因此无需“关闭”按钮。

结果

规范

规范
HTML 标准
# dom-dialog-close-dev

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅

  • 实现此接口的 HTML 元素:<dialog>