Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-3782

Notifications before and after DOM node replacement

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


    • Type: New Feature
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.5-RC4
    • Fix Version/s: 1.5-RC5
    • Component/s: wicket
    • Labels:


      Sometimes JavaScript libraries need to listen for some events on DOM nodes and they register their listeners. Later Wicket can replace such components (or their parent nodes) and the JavaScript listener will stop working.
      By adding notification before the replacement like
      Wicket.DOM.callNodeChangeListeners('changing', element);

      and another one after:
      Wicket.DOM.callNodeChangeListeners('changed', newElement);
      where 'newElement' is the newly created element gives a chance to the JS library to react.

      The code above was my first attempt. Then I realized that custom JS events will be much better, but it appears IE doesn't support "unknown" events. There are workarounds like http://stackoverflow.com/questions/5342917/custom-events-in-ie-without-using-libraries but this code uses custom node traversal for event attaching as well which bothers me, I'm not sure what is the performance difference.

      So now I'm back on the approach with registered handlers but I think it will be better if it is made general. By passing the 'eventType' (like "wicket.dom.node.remove") as a parameter to the handler it may decide whether to react. Otherwise now we have pre/post/failure handlers for Ajax and who knows what else will be needed in the future.


        1. wicket-3782.patch
          4 kB
          Martin Tzvetanov Grigorov
        2. wicket-3782.patch
          2 kB
          Martin Tzvetanov Grigorov



            • Assignee:
              mgrigorov Martin Tzvetanov Grigorov
              mgrigorov Martin Tzvetanov Grigorov


              • Created:

                Issue deployment