Проверьте событие propertyName
:
function transEnd(event) {
if (event.propertyName === "left") {
alert( "Finished transition!" );
}
}
var node = document.getElementById('node');
node.addEventListener( 'webkitTransitionEnd', transEnd, false );
Таким образом, оно сработает только после завершения свойства left.Это, вероятно, будет работать лучше, если оба свойства будут иметь одинаковую длительность и задержку.Кроме того, это будет работать, если вы измените только «left», или оба, но not , если вы измените только «top».
В качестве альтернативы, вы можете использовать некоторые таймеры:
var transEnd = function anon(event) {
if (!anon.delay) {
anon.delay = true;
clearTimeout(anon.timer);
anon.timer = setTimeout(function () {
anon.delay = false;
}, 100);
alert( "Finished transition!" );
}
};
var node = document.getElementById('node');
node.addEventListener( 'webkitTransitionEnd', transEnd, false );
Это должно гарантировать, что ваш код будет выполняться максимум 1 раз каждые 100 мс.Вы можете изменить задержку setTimeout в соответствии со своими потребностями.