Avatar billede c3-rp Nybegynder
03. november 2009 - 14:18 Der er 2 kommentarer og
1 løsning

F5 i Firefox trigger javascript

Jeg bruger AJAX i min C# webapplikation, til at verifiere indholdet af en tekstboks, når en bruger trykker på en knap. Callback'et resulterer i en confirm, der fortæller brugeren at det indtastede er gyldigt, og om han er sikker på han vil indsende det.

Når der trykkes på knappen, bruger jeg JavaScript til at disable alle tekstbokse og knapper i skeamet, så der ikke kan trykkes på andre imens den nuværende behandles.

Her er problemet så; når ovenstående er fuldført som forventet, og brugeren trykker F5 (og klikker "Ok" til advarslen om at gensende data), så sørger Firefox også for at affyre AJAX kaldet, der verificerer dataet (og derved disabler alle mine controls). I alle andre browsere fungerer det som jeg havde forventet ved tryk på F5; data bliver gensendt men jeg håndterer dupletten i koden og skemaet er øjeblikkeligt klar til indtastning igen.

Jeg kan se udviklere generelt ikke er glade for at disable F5 tasten i Firefox, hvilket jeg nu heller ikke føler er en rigtig løsning. Er der andre der kender til problemstillingen?

Pft.
Dennis
Avatar billede kalp Novice
03. november 2009 - 14:50 #1
Du kan måske blot tjekke koden for hvordan ham her finder ud af om du har kaldt refresh?
http://www.joel.net/code/refresh_capture.aspx

og dermed enten lade være med og deaktivere dine controller.
Hvis du deaktivere dem via. JavaScript så kan du fra serveren blot lave et redirect til samme side:)
Avatar billede c3-rp Nybegynder
03. november 2009 - 16:42 #2
Tak for linket, det var jo en mulighed. Jeg er dog ikke så vild med at skulle lege med session for at løse dette problem. Det må kunne gøres mere elegant.

Jeg er ikke sikker på jeg forstår hvad du mener med at lave et redirect til samme side - mente du vha. scriptet i dit link?

Jeg forstår ærlig talt ikke at Firefox syntes den vil være så smart at invoke mit JavaScript, på et refresh-request. Den burde blot POST'e de samme værdier, thats it. Suk.

Jeg står og tænker at jeg må undersøge om browseren er FF, og at der ikke er klikket på F5 (.. og ctrl + r), i så fald skal mine controls enables igen. Ikke pænt, men kan ikke se nogen anden løsning pt.

Tak for hjælpen kalp
Avatar billede c3-rp Nybegynder
04. november 2009 - 12:41 #3
Fejlen kan jeg se ligger i Firefox der viser cached værdier, når man bruger et UpdatePanel og klikker F5 efter et POST. Den genindsætter værdierne (i mit tilfælde disablede den mine controls, da de var disabled sidst FF så et POST.

Løst vha. at disable autocomplete på mine tekstbokse. En anden løsning var at disable client caching for Firefox, hvilket dog ikke er en holdbar løsning i mit tilfælde.

Luret vha. følgende links:
http://weblogs.asp.net/stefansedich/archive/2008/01/18/eventvalidation-issues-with-asp-net-ajax-and-other-odd-things.aspx

http://www.telerik.com/community/forums/aspnet/ajax/ajax-viewstate-and-firefox.aspx
http://forums.asp.net/p/1230969/2221397.aspx
http://lachlankeown.blogspot.com/2008/04/firefox-refresh-viewstate-updatepanel.html
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester