JavaScript non dispone di un metodo per invocare una funzione una sola volta. Fortunatamente esiste una soluzione.
Si tratta semplicemente di impostare un flag di stato e vincolare l'esecuzione del codice a tale flag:
(function() {
function callOnce( flag, func ) {
if( !flag.fired ) {
func();
}
}
document.addEventListener( 'DOMContentLoaded', function() {
const pointerObj = {
fired: false
};
let times = 0;
callOnce( pointerObj, function() {
times++;
document.getElementById( 'output' ).innerHTML = times;
});
pointerObj.fired = true;
callOnce( pointerObj, function() {
times++;
document.getElementById( 'output' ).innerHTML = times;
});
});
})();