Ich versuche, einen Ereignis-Listener-Rückruf nur einmal auslösen. addEventListener
hat bequem ein Flag, das ich in sie passieren kann:einmal: true mit addEventListener funktioniert nicht auf IE11 oder Edge
einmal: Ein Boolean darauf hinweist, dass der Hörer höchstens einmal aufgerufen werden soll hinzugefügt, nachdem sie. Wenn dies zutrifft, wird der Listener beim Aufruf automatisch entfernt.
Dies funktioniert fantastisch in jedem Browser außer IE11 und Edge. Ich weiß, dass ich den Event-Listener manuell entfernen kann, nachdem er ausgelöst wurde, aber dieses Flag sollte funktionieren ... Mache ich etwas falsch oder ist dies ein anerkanntes Problem mit IE oder was?
Should you prefer JSFiddle, sonst:
var div = document.getElementById('transition');
var result = document.getElementById('result');
window.grow = function(){
var width = div.offsetWidth + 50;
div.style.width = width + 'px';
}
var count = 0;
div.addEventListener('transitionend', function(){
result.innerHTML = "transitionend has fired " + ++count + " times";
}, { once: true });
#transition{
background-color: yellow;
transition: width 2s;
width: 100px;
}
<div id="transition">
Content
</div>
<button onclick="grow()">
Grow the div
</button>
<div id="result">
</div>
es ist ein neuer Trick, den alte Hunde nicht tun können. – dandavis