我在网页上使用JavaScript动画。现在我注意到我得到这个错误:
未捕获DOM异常:Animation.commitStyles:未渲染目标
我找不到任何关于这个的信息。这是什么意思?在Windows上的Firefox 110中会发生这种情况。在Chrome 111中也会发生同样的错误:
未捕获DOM异常:无法对“动画”执行“commitStyles”:不呈现目标元素。
代码如下所示:
let keep = undefined;
let anim = this.first.animate(keyframes, {
duration: duration,
fill: keep !== false ? "forwards" : "none"
});
if (keep !== false) {
anim.addEventListener("finish", () => {
anim.commitStyles();
anim.cancel();
});
}
1条答案
按热度按时间ccrfmcuu1#
未呈现目标元素
当您尝试对DOM中未 * render * 的元素执行
commitStyles
时,您将看到浏览器API抛出Target element is not rendered
异常。最有可能的是,您试图设置
commitStyles
的元素具有使该元素不呈现的CSS规则。即
display: none
您可以通过检查元素是否已呈现来防止出现异常。
This answer详细介绍了检查元素是否已呈现的合理方法。
示例/模拟
通常,您可以在调用
commitStyles
之前检查元素是否已呈现结束语:
commitStyles
相对较新,在mayor浏览器中的采用大约始于2020。这可能就是为什么社区中提供的文档仍然很少的原因。
从某种意义上说,你是在为将来谷歌搜索这个特定错误提供文档😁。
如果您喜欢阅读 chrome 源,则可以看到抛出错误的确切位置和条件。
如果您喜欢阅读规范,这里有一个特定于提交样式的条目