Der Martin: Verhindern, dass über die Adresszeile Variablen verändert werden

Beitrag lesen

Hi,

Statt die Eventhandlerfunktionen direkt in HTML-Tags zu notieren, wie z.B. <button onclick="...">, kann man sie auch per Script zuweisen

ja, kann man - und das ist auch in vielen Fällen vorteilhaft.

d.h. etwas wie myButton.onclick = Spielzug(1,Punkte); funktioniert dann problemlos.

Was verstehst du unter "funktioniert"? Dein Beispielcode jedenfalls ruft die Funktion Spielzug() mit zwei Parametern auf (einer Konstanten und einem zum Zeitpunkt der Zuweisung aktuellen Variablenwert) und weist dann das Funktionsergebnis als Eventhandler zu. Das kann nicht das sein, was du wolltest.

Vielleicht meintest du myButton.onclick = function() {Spielzug(1,Punkte);} - aber das hat auch den in diesem Fall unerwünschten Nebeneffekt, dass der zum Zeitpunkt der Zuweisung aktuelle Wert der Variablen Punkte in einer Closure eingeschlossen wird, und der Eventhandler somit nicht mit dem zum Zeitpunkt des Events gültigen Variablenwerts aufgerufen wird.
Man möge mich korrigieren, wenn ich Unsinn verzapfe; die Scopes in Javascript erzeugen regelmäßig auch immer wieder Knoten in meinem Hirn.

Aber wie schon gesagt, JavaScript ist immer relativ unsicher. Auch ohne globale Variablen kann man von außen Manipulieren

Definitiv, ja. Und das führt uns zu der einzigen Erkenntnis: Wenn irgendetwas manipulationssicher sein soll, ist Javascript der falsche Ansatz.

So long,
 Martin

--
Dieser Satz wurde in mühsamer Kleinstarbeit aus einzelnen Wörtern zusammengesetzt.
  (Hopsel)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(