Found an easier way.... Added "asyncronous: false," to the ajax options!!
Thanks for input Alex Mcauley http://www.thevacancymarket.com ----- Original Message ----- From: "Daniel Rubin" <[email protected]> To: <[email protected]> Sent: Wednesday, July 29, 2009 12:33 PM Subject: [Proto-Scripty] Re: Event.stop(event); > > Jeztah wrote: >> Morning guys/gals. >> >> I have some weird behaviour regarding Event.stop(); >> >> $$('.quickdetails').invoke('observe','click',function(event) { >> >> >> var this_href=$(this).readAttribute('href'); >> var element=this; >> var arr=this_href.split("/"); >> if(arr.length<3) { return; } >> var vacancy_id=arr[arr.length-1]; >> >> window.eEvent=event; >> >> var request=new Ajax.Request('/VacancyInfo',{ >> evalScripts: true, >> method: 'get', >> parameters: >> { >> id:vacancy_id >> }, >> onSuccess : function(transport) { >> >> >> var text=transport.responseText; >> >> $modals.showVacancy({string:text,node:element}); >> >> Event.stop(window.eEvent); // doesnt stop it >> Event.stop(event); // doesnt also stop >> the event >> }, >> onError : function() { >> return true; >> } >> }); >> request=null; >> //Event.stop(event); // stops it >> }); >> }); >> >> ............ >> >> Would it be better to set a variable in the "onSuccess" and then query >> the variable after the Ajax.Request ? as calling Event.stop() inside >> the handler does not seem to work on any browser ? >> >> Regards >> Alex > "After the AJAX request", in terms of lines of code, is not the same as > it is in terms of execution time. In fact, if you'd put the > Event.stop() after the Ajax.Request instantiation, it would get executed > earlier than then onSuccess handler function (which is executed > asynchronously). > > So, what goes wrong in the case given is that the Event.stop(event) (in > the onSuccess handler) is called later, when the event has spent its > whole lifetime (and has triggered any other handlers observing on > elements above the clicked quickdetails element, as well as the default > action). > > This is a tricky case. If you really must stick with the click event > (e. g. there might be some other handlers that are not under your > control), I'd suggest to stop() the original event in any case, so no > further handlers are triggered. Then, if the AJAX call should fail, > clone the event and re-issue it. (I gather Element.fire() doesn't help > you with that, so some browser-dependent magic would have to be worked.) > Otherwise, if you're only interested in switching to the href URL of the > clicked link, it's probably easiest to set window.location.href in the > AJAX call's onError handler. > > Hope that's useful > ----Daniel > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---
