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
>
>

Reply via email to