Path: csiph.com!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Stefan Reuther Newsgroups: de.comp.lang.javascript Subject: =?UTF-8?Q?Re=3a_onsubmit_mehrfach_ausl=c3=b6sen?= Date: Fri, 4 Feb 2022 16:51:21 +0100 Lines: 75 Message-ID: References: <3t61fbe070i162037n3e8%sfroehli@Froehlich.Priv.at> <1t61fc1d81i16ad1bn3e8%sfroehli@Froehlich.Priv.at> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net GUDHzyRZKgGj2UdUdkPJewh+sTFHqaIRaLTeFTf/80pwtLZAe/ Cancel-Lock: sha1:cBQ0CJRPP4441/ykxVsDq67yUcQ= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 Hamster/2.1.0.1538 In-Reply-To: <1t61fc1d81i16ad1bn3e8%sfroehli@Froehlich.Priv.at> Xref: csiph.com de.comp.lang.javascript:5309 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+ >>>
>>>
>>> >>> #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 >> >>
>> >> 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: funktioniert nicht > Alt: 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. 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 finden, löschen, und stattdessen ein