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 talee flag:


(function() {
	function callOnce( flag, func ) {
		if( !flag.fired ) {
			func();
		}
	}

	document.addEventListener( "DOMContentLoaded", function() {
		var pointerObj = {
			fired: false
		},
			times = 0;

		callOnce( pointerObj, function() {
			times++;
			document.getElementById( "output" ).innerHTML = times;
		});

		pointerObj.fired = true;

		callOnce( pointerObj, function() {
			times++;
			document.getElementById( "output" ).innerHTML = times;
		});
	});

})();