SVGAnimationElement: repeatEvent 事件
repeatEvent
是 SVGAnimationElement
接口的事件,当元素的本地时间线重复时触发。元素每次重复后都会触发,第一次迭代之后。
注意:与 repeatEvent
事件相关联的是一个整数,指示哪个重复迭代正在开始;这可以在事件对象的 detail
属性中找到。该值为一个基于 0 的整数,但第一次迭代不会引发重复事件,因此观察到的值将 >= 1。Firefox 支持此功能,但 Chrome 不支持。
此事件不可取消,也不会冒泡。
语法
在诸如 addEventListener()
之类的方法中使用事件名称,或设置事件处理程序属性。
js
addEventListener("repeatEvent", (event) => {});
onrepeat = (event) => {};
事件类型
事件属性
TimeEvent.detail
只读-
一个
long
,具体取决于事件类型,指定有关事件的一些详细信息。对于此事件类型,指示动画的重复次数。 TimeEvent.view
只读-
一个 WindowProxy,用于标识生成事件的窗口。
示例
动画圆圈
html
<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px">
<title>SVG SMIL Animate with Path</title>
<circle cx="0" cy="50" r="50" fill="blue" stroke="black" stroke-width="1">
<animateMotion path="M 0 0 H 300 Z" dur="5s" repeatCount="indefinite" />
</circle>
</svg>
<hr />
<ul></ul>
css
ul {
height: 100px;
border: 1px solid #ddd;
overflow-y: scroll;
padding: 10px 30px;
}
js
let svgElem = document.querySelector("svg");
let animateElem = document.querySelector("animateMotion");
let list = document.querySelector("ul");
animateElem.addEventListener("beginEvent", () => {
let listItem = document.createElement("li");
listItem.textContent = "beginEvent fired";
list.appendChild(listItem);
});
animateElem.addEventListener("repeatEvent", (e) => {
let listItem = document.createElement("li");
let msg = "repeatEvent fired";
if (e.detail) {
msg += `; repeat number: ${e.detail}`;
}
listItem.textContent = msg;
list.appendChild(listItem);
});
事件处理程序属性等效项
请注意,您还可以使用 onrepeat
事件处理程序属性为 repeat
事件创建事件侦听器
js
animateElem.onrepeat = () => {
console.log("repeatEvent fired");
};
规范
规范 |
---|
可缩放矢量图形 (SVG) 2 # RepeatEvent |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。