HTMLElement: sự kiện toggle

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Some parts of this feature may have varying levels of support.

Sự kiện toggle của giao diện HTMLElement kích hoạt trên phần tử popover, phần tử <dialog> hoặc phần tử <details> ngay sau khi nó được hiển thị hoặc ẩn.

  • Nếu phần tử đang chuyển từ ẩn sang hiển thị, thuộc tính event.oldState sẽ được đặt thành closed và thuộc tính event.newState sẽ được đặt thành open.
  • Nếu phần tử đang chuyển từ hiển thị sang ẩn, thì event.oldState sẽ là openevent.newState sẽ là closed.

Sự kiện này không thể hủy.

Cú pháp

Sử dụng tên sự kiện trong các phương thức như addEventListener(), hoặc đặt thuộc tính trình xử lý sự kiện.

js
addEventListener("toggle", (event) => { })

ontoggle = (event) => { }

Loại sự kiện

Một ToggleEvent. Kế thừa từ Event.

Event ToggleEvent

Ví dụ

Ví dụ mã bên dưới mô tả cách sự kiện toggle có thể được dùng với popover. Mã tương tự cũng có thể được dùng cho phần tử <dialog> hoặc <details> theo cùng cách.

Ví dụ cơ bản

Ví dụ này cho thấy cách lắng nghe sự kiện toggle và ghi nhật ký kết quả.

HTML

HTML bao gồm một popover và một nút để bật/tắt nó.

html
<button popovertarget="mypopover">Toggle the popover</button>
<div id="mypopover" popover>Popover content</div>

JavaScript

Đoạn mã thêm trình lắng nghe sự kiện cho toggle và ghi nhật ký trạng thái.

js
const popover = document.getElementById("mypopover");

popover.addEventListener("toggle", (event) => {
  if (event.newState === "open") {
    log("Popover has been shown");
  } else {
    log("Popover has been hidden");
  }
});

Kết quả

Ghi chú về hợp nhất sự kiện toggle

Nếu nhiều sự kiện toggle được kích hoạt trước khi vòng lặp sự kiện có cơ hội chạy, chỉ có một sự kiện duy nhất sẽ được kích hoạt. Điều này được gọi là "hợp nhất sự kiện".

Ví dụ:

js
popover.addEventListener("toggle", () => {
  // …
});

popover.showPopover();
popover.hidePopover();
// `toggle` only fires once

Các ví dụ khác

Thông số kỹ thuật

Specification
HTML
# event-toggle

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

Xem thêm