Source: https://perso.liris.cnrs.fr/tristan.roussillon/ens/javascript/seance2/evtsJavaScript.pdf