该元素需要从页面中删除。这个元素现在有一个事件处理程序transitionend
,当转换完成时会触发它的回调(元素删除)。
问题是用户自己决定他是否需要过渡。如果用户决定不需要它们并且没有将它们添加到样式中,那么相应地,事件transitionend
将永远不会发生并且元素将永远不会关闭。
首先,我假设挂起至少一些会transition
解决问题(即使持续时间 === 0),但事实证明,即使在这种情况下,事件也不会发生。
因此,我决定首先我需要以某种方式确定元素是否具有这样的 css 属性。并且,如果它不存在,则立即删除该元素,而不附加transitionend
.
问题是我不知道该怎么做。有点上网匆忙发现(我真的不知道信息的相关性如何)没有内置的检查方法。
或许现在情况发生了变化。但是,如果没有,那么我要求您为定义函数提供一个近似算法。
事实证明,该算法非常简单:您只需要使用 获取元素的计算样式
window.getComputedStyle(e)
,然后检查transitionDuration
结果对象的属性,使其大于 0。如果是,则挂起处理程序transitionend
。否则,在没有处理程序的情况下删除元素。一个小提示:这个属性中包含的时间是一个以“s”或“ms”结尾的字符串。因此,您将不得不使用该函数
window.parseInt()
从那里提取数字。我不知道这个算法有多准确和无错误,但它似乎满足了我的需求。但我愿意听听这种方法可能存在的缺点。
但是,如果事实证明有用于相同目的的特殊方法,那么我会优先考虑它。