2

我想只觸發一次事件監聽器回調。 addEventListener方便地有一個標誌,我可以通過它:一次:真正與addEventListener不工作在IE11或邊緣

once:一個布爾值,指示偵聽器在添加後應該最多被調用一次。如果它是真的,那麼偵聽器在被調用時會被自動刪除。

這在每個瀏覽器除了 IE11和邊緣奇妙。我知道我可以手動刪除事件偵聽器後,它觸發,但這個標誌應該工作...我做錯了什麼,或者這是一個公認的問題與IE瀏覽器或什麼?

Should you prefer JSFiddle,否則:

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

這是一種新的伎倆,老狗不能這樣做。 – dandavis

回答

2

檢查docs的瀏覽器兼容性部分:沒有IE /邊緣支撐。 caniuse也有幫助。

相關問題