[ https://issues.apache.org/jira/browse/WICKET-7055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17724786#comment-17724786 ]
ASF GitHub Bot commented on WICKET-7055: ---------------------------------------- martin-g merged PR #589: URL: https://github.com/apache/wicket/pull/589 > AjaxEventBehavior onload event unstable > --------------------------------------- > > Key: WICKET-7055 > URL: https://issues.apache.org/jira/browse/WICKET-7055 > Project: Wicket > Issue Type: Bug > Components: wicket-core > Reporter: Maximilian Reichel > Priority: Minor > > As today the AjaxEventBehavior class is not compatible to be used with the > onload event but I could not find this to be documented anywhere. > When using the AjaxEventBehavior class to hook into the onload event, it > works sometimes but it is not stable. This is because AjaxEventBehavior class > itself uses the dom ready event to add the user-defined hooks to the page, > but as clarified [here|https://github.com/jquery/jquery/issues/5075], the > jQuery dom ready event may fires later than the onload event. In this > instance the AjaxEventBehavior adds the user-defined onload hook after the > onload event was already fired and therefore the user-defined hook is never > executed. > As a workaround (tested with wicket 6.18.0) I wrote this class which directly > hooks onto the onload event: > {code:java} > import org.apache.wicket.Component; > import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; > import org.apache.wicket.ajax.AjaxEventBehavior; > import org.apache.wicket.ajax.AjaxRequestTarget; > import org.apache.wicket.markup.head.IHeaderResponse; > import org.apache.wicket.markup.head.OnLoadHeaderItem; > public abstract class AjaxOnLoadEventBehavior extends > AbstractDefaultAjaxBehavior { > @Override > public void renderHead(final Component component, final IHeaderResponse > response) { > super.renderHead(component, response); > if (component.isEnabledInHierarchy()) > { > CharSequence js = getCallbackScript(component); > response.render(OnLoadHeaderItem.forScript(js.toString())); > } > } > @Override > protected void respond(AjaxRequestTarget target) { > onLoad(target); > } > protected abstract void onLoad(final AjaxRequestTarget target); > } > {code} > In my opinion this should be added to the documentation and the > AjaxEventBehavior class should log a warning when used with the onload event. > Maybe wicket could include a class like my AjaxOnLoadEventBehavior. -- This message was sent by Atlassian Jira (v8.20.10#820010)