gpt4 book ai didi

javascript - webkit TransitionEnd 事件监听器触发两次

转载 作者:行者123 更新时间:2023-11-29 17:28:50 26 4
gpt4 key购买 nike

我正在尝试编写一些具有 webkitTransitionEnd eventListener 回调函数的东西,但由于某种原因 eventListener 被触发了两次(doSomething 被执行了两次)。

Something.prototype.functionOne = function() {
this.lightbox = document.createElement('div');
if (this.transitions)
this.element.addEventListener('webkitTransitionEnd', this, false);

window.setTimeout(function() {
this.element.className = 'visible';
}.bind(this), 0);
}

Something.prototype.handleEvent = function(event) {
event.stopPropagation();
this.doSomething();
}

如果不调用 doSomething 两次,这在 Safari 5.1 上不起作用。我不想在第一次运行时删除 eventListener,我只想让它在类更改时执行一次。

直播http://mynameisraj.com/code/cssbox

最佳答案

在做了一些调查之后,在我看来,handleEvent 被调用一次,分别用于两个独立的 WebKitTransitionEvent。事件,propertyName 不同——第一个事件的 propertyName"opacity";另一个有 "-webkit-transform"

我假设 handleEvent 总是为每个完成动画的 CSS 属性调用一次,然后为整个转换 block 调用一个带有 "-webkit-transform" 的属性。

为了修复您的示例,我相信这会起作用:

Something.prototype.handleEvent = function(event) {
event.stopPropagation();

if ( event.propertyName === "-webkit-transform" ) {
this.doSomething();
}
}

关于javascript - webkit TransitionEnd 事件监听器触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com