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

浏览器兼容性

另见