mozesz zrobic troche lepiej, tj. oszczedzic przy kazdym wywolaniu eventa calla do eval (a wiec parsowania kodu, co jest dosc kosztowne).
Kod:
const code = "alert('foo')"
const node = document.getElementById(...)
node.addEventListener('click', new Function(code))
co jest rownoznaczne z
Kod:
const fun = () => { alert('foo') }
const node = document.getElementById(...)
node.addEventListener('click', fun)
mozesz dla tak stworzonej funkcji rowniez zdefiniowac parametry. w tym wypadku przydatne moze byc przyjmowanie MouseEvent.
Kod:
const code = 'alert(`${e.clientX} ${e.clientY}`)'
const node = document.getElementById(...)
node.addEventListener('click', new Function('e', code))
rownoznaczne z
Kod:
const fun = e => { alert(`${e.clientX} ${e.clientY}`) }
const node = document.getElementById(...)
node.addEventListener('click', fun)
po kliknieciu na `node` wyskoczy alert z wspolrzednymi kursora.
wiecej info na MDN:
https://developer.mozilla.org/en-US/...jects/Function
Zakładki