Web: Doppelte Submits vermeiden

November 30th, 2007 von Sven

Webanwendung finden aufgrund bestimmter Threadbedingter Nebenläufigkeiten doppelte Anfrage innerhalb der gleichen User Session oftmals nicht so toll. Um das zu unterdrücken, gibt es Serverseitig Techniken, um das abzufange. Für den Fall, daß diese versagen, bleibt nichts anderes übrig, als dies clientseitig zu realisieren (und zu hoffen, daß der User JavaScript aktiviert hat):

JavaScript:
  1. submitted = false;
  2. initialized=false;
  3. document.onclick=init;
  4.  
  5. function init()
  6. {
  7. if(!initialized)
  8. {
  9. document.forms[0].onsubmit=disableSubmit; //hier wird der Eventlistener am ersten Formular der Seite registriert
  10. initialized=true;
  11. }
  12. }
  13.  
  14. function disableSubmit()
  15. {
  16. if(submitted)
  17. {
  18. return false;
  19. }
  20. submitted=true;
  21. }

Sobald nun ein Request per Submit abgesendet worden ist, ist kein weiterer möglich, bis der Response da ist.
Getestet wurde das Skript unter Firefox 2.0 und IE 6.0.

Geschrieben in javascript | Keine Kommentare »