Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.javascript > #5309

Re: onsubmit mehrfach auslösen

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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