Why don't you include a <script> HTML fragment as part of your panel? So that it is executed when panel loads.
Ernesto On Thu, Jan 21, 2010 at 5:59 AM, Steve Swinsburg <steve.swinsb...@gmail.com>wrote: > Ah. Ok added that, still nothing. I see in the markup that the html has > been added to the panel's div, though it's not running. Elsewhere on the > page Javascript is working ok so I don't think it's broken, I just don't > think the onLoad event is firing for an AjaxLazyLoadPanel. > > I'll keep going with these behaviours though, if thats how it should be > implemented? > > cheers for the tips, > Steve > > > > > On 21/01/2010, at 3:38 PM, Lionel Port wrote: > > > I was looking at the first box. > > > > add(new AbstractDefaultAjaxBehavior() { > > @Override > > protected void onComponentTag(ComponentTag tag) { > > super.onComponentTag(tag); > > String js = "alert('hello');"; > > tag.put("onload", js); > > } > > } > > > > On Thu, Jan 21, 2010 at 3:31 PM, Steve Swinsburg > > <steve.swinsb...@gmail.com> wrote: > >> Typo in the alert, but even adding logging to the AjaxEventBehavior, it > never fires. > >> > >> .add(new AjaxEventBehavior("onload"){ > >> protected void onEvent(AjaxRequestTarget target){ > >> > log.error("*************************************"); > >> target.appendJavascript("alert('hello');"); > >> } > >> })); > >> > >> logs show nothing. > >> > >> Is it because its loading asynchronously after the rest of the page > loads? If so, how can I tap into it? > >> > >> cheers. > >> > >> > >> On 21/01/2010, at 3:26 PM, Steve Swinsburg wrote: > >> > >>> Hi Lionel, > >>> > >>> Thanks and yes, thats what I am trying to do, attach some javascript > after something has rendered. So I attached an AjaxEventBehaviour to it and > now have this: > >>> > >>> add(new AjaxLazyLoadPanel("myPanel") { > >>> > >>> @Override > >>> public Component getLazyLoadComponent(String markupId) { > >>> return new SomePanel(markupId); > >>> } > >>> }.add(new AjaxEventBehavior("onload"){ > >>> protected void onEvent(AjaxRequestTarget target){ > >>> target.appendJavascript("alert('hello)';"); > >>> } > >>> })); > >>> > >>> but the javascript is never fired. > >>> > >>> Any more ideas? > >>> > >>> cheers, > >>> Steve > >>> > >>> > >>> On 21/01/2010, at 3:09 PM, Lionel Port wrote: > >>> > >>>> Hi Steve, > >>>> > >>>> Are you trying to do this.. > >>>> > >>>> http://cwiki.apache.org/WICKET/adding-javascript-from-wicket.html > >>>> > >>>> with an onload event instead of onblur, or do I misunderstand. > >>>> > >>>> regards, > >>>> Lionel > >>>> > >>>> On Thu, Jan 21, 2010 at 2:56 PM, Steve Swinsburg > >>>> <steve.swinsb...@gmail.com> wrote: > >>>>> So overriding onAfterRender for a component doesn't just override it > for that instance of the component? > >>>>> > >>>>> Also I can see the markup is being added to the end of the page after > the closing HTML. However, the Javadocs say it is meant to be called after > after the actual component is finished rendering. So it look s like > onAfterRender is not what I need. > >>>>> > >>>>> Can I attach to a different phase in the render lifecycle to call the > javascript when that specific panel has just finished rendering? > >>>>> > >>>>> thanks, > >>>>> Steve > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> On 21/01/2010, at 2:52 PM, Igor Vaynberg wrote: > >>>>> > >>>>>> you are writing out javascript after every component render... > >>>>>> > >>>>>> perhaps you should keep a boolean flag that marks if you rendered > the > >>>>>> js yet or not. > >>>>>> > >>>>>> alternatively you can add a behavior to the panel with istemporary() > { > >>>>>> return true; } > >>>>>> > >>>>>> -igor > >>>>>> > >>>>>> On Wed, Jan 20, 2010 at 7:24 PM, Steve Swinsburg > >>>>>> <steve.swinsb...@gmail.com> wrote: > >>>>>>> I have an AjaxLazyLoadPanel and want some javascript to fire after > its loaded it's contents: > >>>>>>> > >>>>>>> I assumed I could override onAfterRender and add my javascript like > so: > >>>>>>> > >>>>>>> add(new AjaxLazyLoadPanel("myPanel") { > >>>>>>> > >>>>>>> @Override > >>>>>>> public Component getLazyLoadComponent(String markupId) { > >>>>>>> return new SomePamel(markupId); > >>>>>>> } > >>>>>>> > >>>>>>> @Override > >>>>>>> protected void onAfterRender() { > >>>>>>> JavascriptUtils.writeJavascript(getResponse(), > "alert('hello');"); > >>>>>>> super.onAfterRender(); > >>>>>>> } > >>>>>>> > >>>>>>> }); > >>>>>>> > >>>>>>> Except it is called twice, it looks like once when the page is > loading and then again when the actual panel has been loaded. > >>>>>>> > >>>>>>> Is there another way to achieve what I want? > >>>>>>> > >>>>>>> thanks, > >>>>>>> Steve > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > --------------------------------------------------------------------- > >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org > >>>>>> > >>>>> > >>>>> > >>>>> --------------------------------------------------------------------- > >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>>>> For additional commands, e-mail: users-h...@wicket.apache.org > >>>>> > >>>>> > >>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>>> For additional commands, e-mail: users-h...@wicket.apache.org > >>>> > >>> > >> > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > For additional commands, e-mail: users-h...@wicket.apache.org > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >