2

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>

+3

es ist ein neuer Trick, den alte Hunde nicht tun können. – dandavis

Antwort

2

den Browser-Kompatibilität Abschnitt der docs: Nein IE/edge Unterstützung. caniuse ist auch hilfreich.

Verwandte Themen