Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.javascript > #5309
| From | Stefan Reuther <stefan.news@arcor.de> |
|---|---|
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: onsubmit mehrfach auslösen |
| Date | 2022-02-04 16:51 +0100 |
| Message-ID | <stjli9.5ik.1@stefan.msgid.phost.de> (permalink) |
| References | <3t61fbe070i162037n3e8%sfroehli@Froehlich.Priv.at> <sth32r.3is.1@stefan.msgid.phost.de> <1t61fc1d81i16ad1bn3e8%sfroehli@Froehlich.Priv.at> |
Am 03.02.2022 um 19:29 schrieb Stefan Froehlich:
> On Thu, 03 Feb 2022 17:23:39 Stefan Reuther wrote:
>> Am 03.02.2022 um 15:14 schrieb Stefan Froehlich:
>>> #v+
>>> <form id="61fbe1414dff6">
>>> </form>
>>> <script type="text/javascript" nonce="xxxxx">
>>> document.getElementById("61fbe1414dff6").addEventListener('submit',
>>> function(e) { return onesubmitonly(); });
>>> </script>
>>> #v-
>>
>> Wo ist denn 'onesubmitonly' in der Version definiert?
>
> In einem externen File.
ok.
>> (Wenn ich das richtig sehe, muss das nonce auch noch vom Server in
>> einem Header ausgeliefert werden? Kann der nicht gleich einen
>> "CSP: mir egal" Header ausliefern, um alle inline-Skripte
>> freizuschalten?)
>
> Könnte er natürlich, aber damit würde sich der Kreis schließen: Ich
> mache den Kopfstand deshalb, weil ein Security-Consultant das
> onsubmit="" als Böse[TM] markiert hat, und sich in solchen Fällen
> immer der größere durchsetzt - das bin nicht ich.
Und der hat nicht angemeckert, dass man Doppel-Submit eigentlich auf dem
Server filtern sollte? :-)
>> Ich würde das Skript in eine separate Datei packen, dann
>>
>> <form class="one-only">
>>
>> und
>>
>> document.addEventListener('DOMContentLoaded', function() {
>> var es = document.getElementsByClassName('one-only');
>> for (var i = 0; i < es.length; ++i) {
>> es[i].addEventListener(...);
>> }
>> });
>
> Naja, ob ich es jetzt über die Klasse oder über die Id referenziere,
> ist dann auch schon egal (letzteres ist ein Akt der Bequemlichkeit,
> mein Framework tut das weitgehend automatisch für mich).
Vorteil der Suche über den Klassennamen ist, dass man das
Spezialverhalten automatisch überall bekommt, wo die Klasse benutzt
wird. Man kann also einfach ins HTML ein solches Formular schreiben, und
das Javascript greift sich das automatisch. Wenn du ein Framework hast,
das die IDs passend vergibt, reicht das natürlich auch.
> Ich hab jetzt Minimalbeispiele auf meinen Server gestellt:
>
> Neu: <http://froehlich.priv.at/test.php> funktioniert nicht
> Alt: <http://froehlich.priv.at/test2.php> funktioniert
Ich krieg damit jetzt mit Firefox kein Fehlverhalten hin.
Was ich mir so an Doku heranhole sagt aber, 'return' sei deprecated, und
man möge doch bitte Event.preventDefault() benutzen.
<https://developer.mozilla.org/en-US/docs/Web/API/Event/returnValue>
<https://stackoverflow.com/questions/128923/>
Wenn's gar nicht klappen will: Ich ersetze in so einem Fall den
regulären Submit-Button durch einen Javascript-Button, der alle
Prüfungen ausführt und nur im Erfolgsfall form.submit() aufruft (also:
im DOMContentLoaded das <input type=submit> finden, löschen, und
stattdessen ein <button> o.ä. mit onclick einfügen). Quasi Whitelist
statt Blacklist.
Stefan
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
onsubmit mehrfach auslösen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2022-02-03 14:14 +0000
Re: onsubmit mehrfach auslösen Stefan Reuther <stefan.news@arcor.de> - 2022-02-03 17:23 +0100
Re: onsubmit mehrfach auslösen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2022-02-03 18:29 +0000
Re: onsubmit mehrfach auslösen Stefan Reuther <stefan.news@arcor.de> - 2022-02-04 16:51 +0100
Re: onsubmit mehrfach auslösen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2022-02-04 20:25 +0000
Re: onsubmit mehrfach auslösen Stefan Reuther <stefan.news@arcor.de> - 2022-02-05 10:24 +0100
Re: onsubmit mehrfach auslösen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2022-02-05 09:56 +0000
csiph-web