[Seaside] ajax onBlur callback with load html: [...]

Bob Nemec bobn at rogers.com
Wed Sep 15 21:40:36 UTC 2021


 
Wow, this is proving to be challenge. The problem is that in JQAjax>>processCallback #callback is sometimes nil. When it is, the button press callback is not processed and the button has to be pressed again. But, if the onBlur of the text input field has a 100ms delay, the #callback value is not nil and the button callback works all the time. Which is especially frustrating because adding diagnostic traces slows down the first callback enough for things to work. 
This is pushing me to the edge of my Seaside knowledge. I will try this same example with the latest Seaside code on Pharo. If it works, I'll work on getting us updated (we develop in VW but deploy on GS). If not, I'll have a nice packaged problem to raise on the Seaside part of the Pharo Discord channel. 
Bob
    On Tuesday, September 14, 2021, 08:58:31 a.m. EDT, Karsten Kusche <karsten at heeg.de> wrote:  
 
 #yiv0857676699 body{font-family:Helvetica, Arial;font-size:13px;}Hi Bob,

We use onBlur to get the data from input fields and to refresh the state of the view. The problem comes up if a button is included in the refresh: the ajax callback from that button is not handled (which makes sense due to the jQuery load), so the user has to press the button again.

I’d say it actually doesn’t make any sense. Your callbacks are registered, they should work regardless. You could use the Web-Browser’s network tool/profiler to see which event-handler is fired and what network requests are made. Maybe one of the requests doesn’t come through correctly and you can investigate that further. 

Some things you should also consider: when you use render HTML-Snippets that contain Javascript (like new click-handlers), Seaside will automatically add these inside a <script>-tag at the end of this snippet and inject that into your DOM at the place where you inject the HTML. In your case you should have a <script>-tag at the end of your #testDiv. 

I’m not entirely sure about this, but iirc replacing that script-tag will also remove all event-handlers that were registered as part of this tag. On the other hand replacing the <script> also means replacing the <button> so you should still have a working button in any case… like i said, it doesn’t really make much sense.

Karsten
  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/seaside/attachments/20210915/be8bfef6/attachment.html>


More information about the seaside mailing list