Element:beforematch 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

當一個元素處於“隱藏直到找到”狀態,並且由於使用者透過“頁面查詢”功能或片段導航找到了內容,瀏覽器即將顯示其內容時,該元素將接收一個 beforematch 事件。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

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

onbeforematch = (event) => { }

事件型別

一個通用的 Event

用法說明

HTML 的 hidden 屬性接受一個值 until-found:當指定此值時,元素將被隱藏,但其內容對瀏覽器的“頁面查詢”功能或片段導航是可訪問的。當這些功能導致滾動到“hidden until found”子樹中的元素時,瀏覽器將

  1. 在隱藏的元素上觸發一個 beforematch 事件
  2. 移除元素的 hidden 屬性
  3. 滾動到元素

示例

使用 beforematch

在此示例中,我們有兩個 <div> 元素。第一個是可見的,而第二個具有 hidden="until-found"id="until-found-box" 屬性。具有 until-found-box ID 的元素具有點狀紅色邊框和灰色背景。

我們還有一個連結,它指向 "until-found-box" 片段,以及一個監聽該隱藏元素上 beforematch 事件觸發的 JavaScript。事件處理程式會更改框的內容,以說明當 hidden until found 狀態即將被移除時可能發生的行為。

HTML

html
<a href="#until-found-box">Go to hidden content</a>

<div>I'm not hidden</div>
<div id="until-found-box" hidden="until-found">Hidden until found</div>

CSS

css
div {
  height: 40px;
  width: 300px;
  border: 5px dashed black;
  margin: 1rem 0;
  padding: 1rem;
  font-size: 2rem;
}

div#until-found-box {
  color: red;
  border: 5px dotted red;
  background-color: lightgray;
}

JavaScript

js
const untilFound = document.querySelector("#until-found-box");
untilFound.addEventListener(
  "beforematch",
  () => (untilFound.textContent = "I've been revealed!"),
);

結果

點選“轉到隱藏內容”按鈕會將使用者導航到 hidden until found 狀態的元素。beforematch 事件觸發,內容更新,然後元素的內容顯示出來(hidden 屬性被移除)。

要再次執行示例,請點選“重新載入”。

如果您的瀏覽器不支援 hidden 屬性的 "until-found" 列舉值,第二個 <div> 將被隱藏(因為在新增 until-found 值之前 hidden 是布林值)。

規範

規範
HTML
# event-beforematch

瀏覽器相容性

另見