»» ~~~javascript
function buttonsent(button) {
»» var img = button.firstChild;
Das liefert je nach Browser den Textknoten, nicht das img-Element. Verwende besser button.getElementsByTagName("img")[0] oder entferne Leerzeichen und Zeilenumbrüche zwischen den Tags.
Ok, Danke für den Hinweis.
»» button.onclick = null;
Wieso setzt du dann ein onclick-Attribut?
Das onclick ist Vorgabe von Magento. Nachdem es einmal aufgerufen wurde, soll der Besucher durch ungeduldiges Klicken die Daten nicht mehrmals übertragen können. Als visuelles Feedback wird das Bild ausgetauscht und zusätzlich der DOM so abgeändert, dass weitere Klicks nichts bewirken.
button.form liefert dir bereits das Formular
Ok, Danke für den Hinweis.
»» parent.submit();
Das verstehe ich auch nicht, du hast einen Submit-Button in einem Formular. Wenn du nicht onclick="buttonsent(this); return false" notierst, also die [link:http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#standardaktion@title=Standardaktion unterdrückst], dann wird das Formular automatisch abgesendet. D.h. du brauchst submit() gar nicht manuell aufrufen
Wenn du es vorher beim mousedown absendest und die Action löscht, dann kann es sein, dass der Browser das von JavaScript ausgelöste Absenden unterbricht und das Formular nochmal nach null versendet. Ich weiß nicht, ob das die Fehlerursache ist, ich würde es jedenfalls nicht darauf ankommen lassen und klassisch lösen.
Das ist vermutlich recht unzuverlässiges Verhalten und ich werd es irgendwie ausbauen. Danke
»» /* disable form */
»» parent.action = null;Macht das Sinn? Welchen Zweck soll das erfüllen?
Gleiche Idee wie bereits erwähnt - der Besucher soll das Formular nicht durch ungeduldiges Klicken nochmal abschicken können.
»» [code lang=html]
»» <button onclick="setLocation('...')" onmousedown="buttonsent(this);">
»» <img src="/images/warenkorb/warenkorb_button.png" alt="bestellen" />
»» </button>
»»
> »» Das onclick script ist vom Shopsystem (Magento) und sollte vermutlich drin bleiben.
>
> ?? Aber du überschreibst den Handler doch? Dann kannst du es auch löschen.
Oh, da hatte ich nicht ganz den richtigen HTML geschrieben. buttonsent() wird in onmouseup ausgelöst. Wird es dann vor oder nach dem onclick event aufgerufen? Wer kann wen überschreiben?