Yahhhyahhh!
The answer appears to be a HeaderContributor with a call to
renderOnLoadJavascript.
Bruno - you're a star!
I will respond with a more sensible sentence than above as soon as I have
proven it (so far it works).
Rgds, Graeme.
Bruno Cesar Borges wrote:
>
> Try the setTimeout('myfunction()', 100); function. The second argument is
> the timeout (in miliseconds) to wait before evaluating the first argument.
>
> There's also a way to execute your javascript function only after body is
> fully loaded. Google for that. Maybe that's your answer.
>
> cheers,
> Bruno (becoming a JS developer rather Wicket)
>
> -----Original Message-----
> From: Graeme Knight [mailto:[EMAIL PROTECTED]
> Sent: Monday, December 08, 2008 2:31 PM
> To: [email protected]
> Subject: Re: Populate IFRAME innerHTML on AJAX load of panel.
>
>
>
> Not sure about this solution. The content of the iframe is visible then
> disappears... Hhm.
>
>
> Graeme Knight wrote:
>>
>> Hi guys,
>>
>> I'm making some progress. wicketGlobalPostCallHandler doesn't seem to be
>> working for me, but I can do something like this after the iframe:
>>
>> StringBuilder buffer = new StringBuilder( "<script>" );
>> buffer.append( "IFrameArea.populateContent( false, true, 'hello
>> world' );" );
>> buffer.append( "</script>" );
>>
>> Label scriptLabel = new Label( "scriptLabel", buffer.toString()
>> );
>>
>> scriptLabel.setRenderBodyOnly( true );
>> scriptLabel.setEscapeModelStrings( false );
>>
>> add( scriptLabel );
>>
>> This will add a nice bit of Javascript into the whole lot that will call
>> the populateContent function (hurray).
>>
>> Now the thing is, the text (hello world) flashes on the screen - then
>> disappears.
>>
>> If I hit the 'refresh' button on the browser then the innerHTML 'hello
>> world' sticks. If I can solve this tricky problem then I think I'm good
>> to
>> go.
>>
>> Is it REALLY this simple? Why does Wicket have to be so cool?
>>
>> Cheers, Graeme.
>>
>>
>> Graeme Knight wrote:
>>>
>>> Hi Ernesto,
>>>
>>> No - I didn't solve this problem as yet. However, this is part of the
>>> process of parsing the HTML prior to insertion on the innerHTML. If I
>>> can
>>> get that bit working I'm going to get back to our thread on the CIDs
>>> very
>>> soon!
>>>
>>> Cheers, Graeme.
>>>
>>>
>>> Graeme Knight wrote:
>>>>
>>>> Hi Bruno,
>>>>
>>>> No I didn't try this the Label idea... I'll give it a go!
>>>>
>>>> Thanks for the link I'll let you know how it works out ... watch this
>>>> space!
>>>>
>>>>
>>>>
>>>> Bruno Cesar Borges wrote:
>>>>>
>>>>> Did you try to add a Label with CSS hidden attribute that executes
>>>>> your
>>>>> script? Something like this:
>>>>>
>>>>> <div style="display:none;">
>>>>> <script>myJavascriptMethod();</script>
>>>>> </div>
>>>>>
>>>>> I'm really not sure if this actually works, but you could also check
>>>>> this Wiki page (yeah, it exists)
>>>>>
>>>>> http://cwiki.apache.org/WICKET/howto-do-javscript-call-after-each-wicket-ajax-update.html
>>>>>
>>>>> cheers,
>>>>> Bruno
>>>>>
>>>>> -----Original Message-----
>>>>> From: Graeme Knight [mailto:[EMAIL PROTECTED]
>>>>> Sent: Monday, December 08, 2008 12:12 PM
>>>>> To: [email protected]
>>>>> Subject: Re: Populate IFRAME innerHTML on AJAX load of panel.
>>>>>
>>>>>
>>>>>
>>>>> Hi Bruno,
>>>>>
>>>>> Right, that far I DID get. I have a Javascript file that contains the
>>>>> required Javascript for my editor.
>>>>>
>>>>> (Sorry, I don't have the code now):
>>>>>
>>>>> When the user hits the tab and the panel goes into another context I
>>>>> create
>>>>> the panel, add a HeaderContributor that adds the Javascript file.
>>>>>
>>>>> This panel is not created via a page refresh - it is replaced as per
>>>>> the
>>>>> code above (i.e. currentPanel = new .... ). Will the HeaderContributor
>>>>> actually be utilized at this point or is a full page refresh required?
>>>>>
>>>>> My BIG problem (this is the crux) is HOW to call that Javascript
>>>>> function -
>>>>> the call to 'popupateContent' effectively has to be AFTER the iframe
>>>>> is
>>>>> initialized (so an innerHTML exists). This can't be part of a
>>>>> HeaderContributor - it has to be further down the chain of execution.
>>>>> My
>>>>> confusion is how to make this happen.
>>>>>
>>>>> Almost there! What are the guidelines for the Wiki when I get this
>>>>> working?
>>>>> Perhaps I can submit to the Wicket people for verification?
>>>>>
>>>>> REALLY appreciate your discussion on this.
>>>>>
>>>>> Cheers, Graeme.
>>>>>
>>>>>
>>>>> Bruno Cesar Borges wrote:
>>>>>>
>>>>>> Put that code into some .js file and add it to your panel as a
>>>>>> HeaderContributor. Then you are ready to go.
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Graeme Knight [mailto:[EMAIL PROTECTED]
>>>>>> Sent: Monday, December 08, 2008 11:48 AM
>>>>>> To: [email protected]
>>>>>> Subject: Re: Populate IFRAME innerHTML on AJAX load of panel.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hey Bruno,
>>>>>>
>>>>>> Perhaps my ramblings with myself didn't make myself clear.
>>>>>>
>>>>>> I am simply wanting to populate the innerHTML with content. I have it
>>>>>> working wonderfully with Tapestry but not with Wicket as I'm not sure
>>>>>> of
>>>>>> the
>>>>>> correct way of doing it.
>>>>>>
>>>>>> Essentially my component will be a wysiwyg editor. I don't want to
>>>>>> use
>>>>>> standard ones because I have written my own AND I will be doing some
>>>>>> fancy
>>>>>> stuff with the content at a later date.
>>>>>>
>>>>>> So perhaps here's the correct question:
>>>>>>
>>>>>> What's the best way to set innerHTML on an iframe?
>>>>>>
>>>>>
>>>>>> I have a javascript function that I would like to call, which is
>>>>>> something
>>>>>> like the following:
>>>>>>
>>>>>> IFrameArea.populateContent = function( isEditable,
>>>>>> allowDocumentTags,
>>>>>> content )
>>>>>> {
>>>>>> var iFrame = document.getElementById( IFrameArea.FRAME_NAME );
>>>>>>
>>>>>> if( iFrame.contentWindow != null )
>>>>>> {
>>>>>> if( iFrame.contentWindow.document != null )
>>>>>> {
>>>>>> var iFrameDocument =
>>>>>> iFrame.contentWindow.document;
>>>>>>
>>>>>> iFrameDocument.open();
>>>>>>
>>>>>> if( allowDocumentTags == true )
>>>>>> {
>>>>>> iFrameDocument.write('<html><head>');
>>>>>>
>>>>>> iFrameDocument.write( '<link
>>>>>> rel="stylesheet" type="text/css"
>>>>>> href="styles/IFrameStyle.css">' );
>>>>>>
>>>>>>
>>>>>> iFrameDocument.write('</head><body>');
>>>>>> }
>>>>>>
>>>>>> iFrameDocument.write( content );
>>>>>>
>>>>>>
>>>>>> if( allowDocumentTags == true )
>>>>>> {
>>>>>> iFrameDocument.write('</body></html>');
>>>>>> }
>>>>>>
>>>>>> iFrameDocument.close();
>>>>>>
>>>>>> if( isEditable == true )
>>>>>> {
>>>>>> IFrameArea.designModeOn();
>>>>>> }
>>>>>> }
>>>>>> }
>>>>>> };
>>>>>>
>>>>>> isEditable indicates whether the iframe is editable or not,
>>>>>> allowDocumentTags indicates whether the iframe should contain basic
>>>>>> html
>>>>>> tags and CSS, and the content is ... the content (created by the
>>>>>> server) -
>>>>>> this is my Tapestry-esq implementation, so of course it is open to
>>>>>> change.
>>>>>>
>>>>>> The magic question: How do I get this in the HTML for the 'context'
>>>>>> panel?
>>>>>>
>>>>>>
>>>>>> Bruno Borges wrote:
>>>>>>>
>>>>>>> I've just read your thread and looks like what you want to do is
>>>>>>> quite...
>>>>>>> invalid. Iframes are just like normal frames, or even, a separate
>>>>>>> window/tab. If you think that way, you will notice that what you
>>>>>>> want
>>>>>>> to
>>>>>>> do
>>>>>>> is not possible. From a Javascript developer's perspective, of
>>>>>>> course.
>>>>>>> This
>>>>>>> has nothing to do with Wicket.
>>>>>>>
>>>>>>> If you want to set the innerHTML property of some DOM object, that
>>>>>>> object
>>>>>>> *has* to have that property. Check these URLs:
>>>>>>>
>>>>>>> http://www.htmlite.com/lite021.php
>>>>>>> http://msdn.microsoft.com/en-us/library/ms535258(VS.85).aspx#
>>>>>>>
>>>>>>> So, stop talking with yourself about something impossible to
>>>>>>> accomplish
>>>>>>> and
>>>>>>> go get some sleep buddy... ;-)
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Bruno Borges
>>>>>>> blog.brunoborges.com.br
>>>>>>> +55 21 76727099
>>>>>>>
>>>>>>> "The glory of great men should always be
>>>>>>> measured by the means they have used to
>>>>>>> acquire it."
>>>>>>> - Francois de La Rochefoucauld
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Dec 8, 2008 at 1:07 AM, Graeme Knight <[EMAIL PROTECTED]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Bruno!
>>>>>>>>
>>>>>>>> I absolutely would love to write a wiki page on this if I can make
>>>>>>>> it
>>>>>>>> work
>>>>>>>> -
>>>>>>>> and you are right - conversation with myself *might* help others
>>>>>>>> who
>>>>>>>> perhaps
>>>>>>>> have a similar problem.
>>>>>>>>
>>>>>>>> I'm not quite there yet :-( - perhaps tomorrow!
>>>>>>>>
>>>>>>>> Cheers, Graeme.
>>>>>>>>
>>>>>>>>
>>>>>>>> Bruno Borges wrote:
>>>>>>>> >
>>>>>>>> > With all that conversation with yourself, how about writing a
>>>>>>>> Wiki
>>>>>>>> page
>>>>>>>> > after you succeed ?! :-D
>>>>>>>> >
>>>>>>>> > Cheers,
>>>>>>>> > Bruno Borges
>>>>>>>> > blog.brunoborges.com.br
>>>>>>>> > +55 21 76727099
>>>>>>>> >
>>>>>>>> > "The glory of great men should always be
>>>>>>>> > measured by the means they have used to
>>>>>>>> > acquire it."
>>>>>>>> > - Francois de La Rochefoucauld
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > On Sun, Dec 7, 2008 at 11:51 PM, Graeme Knight
>>>>>>>> <[EMAIL PROTECTED]>
>>>>>>>> > wrote:
>>>>>>>> >
>>>>>>>> >>
>>>>>>>> >> Hi.
>>>>>>>> >>
>>>>>>>> >> I'm making some progress by using an IPageLink to a page that
>>>>>>>> might
>>>>>>>> >> contain
>>>>>>>> >> (if I can) the rendered content... HHmm...
>>>>>>>> >>
>>>>>>>> >> Cheers, Graeme.
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >> Graeme Knight wrote:
>>>>>>>> >> >
>>>>>>>> >> > Hi.
>>>>>>>> >> >
>>>>>>>> >> > I have an application with links that switch panels using
>>>>>>>> AJAX:
>>>>>>>> >> >
>>>>>>>> >> > :
>>>>>>>> >> > private Panel currentPanel;
>>>>>>>> >> > :
>>>>>>>> >> > ContactsListPanel manageContactsPanel = new
>>>>>>>> ContactsListPanel();
>>>>>>>> >> >
>>>>>>>> >> > currentPanel.replaceWith( manageContactsPanel );
>>>>>>>> >> >
>>>>>>>> >> > currentPanel = manageContactsPanel;
>>>>>>>> >> > :
>>>>>>>> >> >
>>>>>>>> >> > One of my panels has an IFRAME on it which I wish to populate
>>>>>>>> with
>>>>>>>> >> content
>>>>>>>> >> > on rendering. I would like to set the innerHTML through
>>>>>>>> Javascript,
>>>>>>>> >> rather
>>>>>>>> >> > than set the SRC (the innerHTML will be injected with content
>>>>>>>> that
>>>>>>>> is
>>>>>>>> >> > modified on the server and not a static source page).
>>>>>>>> >> >
>>>>>>>> >> > I have a Javascript function that can be called once the
>>>>>>>> IFRAME
>>>>>>>> has
>>>>>>>> >> > (effectively) been rendered (using a Variables Model for
>>>>>>>> replacing
>>>>>>>> >> > 'originalContent' with text):
>>>>>>>> >> >
>>>>>>>> >> > function initializeIFrameArea()
>>>>>>>> >> > {
>>>>>>>> >> > IFrameArea.populateContent( "${originalContent}" );
>>>>>>>> >> > }
>>>>>>>> >> >
>>>>>>>> >> > The populateContent function simply sets the innerHTML on the
>>>>>>>> IFRAME.
>>>>>>>> >> The
>>>>>>>> >> > 'originalContent' is my modified content to be injected into
>>>>>>>> the
>>>>>>>> >> > innerHTML.
>>>>>>>> >> >
>>>>>>>> >> > My question is this:
>>>>>>>> >> >
>>>>>>>> >> > 1) On entering the panel, I was wondering if it is possible to
>>>>>>>> use
>>>>>>>> a
>>>>>>>> >> > HeaderContributor (i.e. this is NOT a full page rerender) to
>>>>>>>> add
>>>>>>>> the
>>>>>>>> >> > script containing the IFrameArea Javascript on which the
>>>>>>>> >> populateContent
>>>>>>>> >> > is called. I can't have the initializeIFrameArea function on
>>>>>>>> the
>>>>>>>> page
>>>>>>>> >> from
>>>>>>>> >> > the start because I am using a Variables Model to change the
>>>>>>>> value
>>>>>>>> of
>>>>>>>> >> > originalContent on the fly (i.e. when the user enters this
>>>>>>>> panel
>>>>>>>> the
>>>>>>>> >> > content could be one of many possibilities).
>>>>>>>> >> >
>>>>>>>> >> > 2) On rendering I want to be able to call
>>>>>>>> initializeIFrameArea,
>>>>>>>> but
>>>>>>>> I
>>>>>>>> >> do
>>>>>>>> >> > not understand how I can get this into the HTML of the panel
>>>>>>>> so
>>>>>>>> that
>>>>>>>> it
>>>>>>>> >> > calls the function after the IFRAME is effectively rendered
>>>>>>>> and
>>>>>>>> >> innerHTML
>>>>>>>> >> > exists.
>>>>>>>> >> >
>>>>>>>> >> > Perhaps there is a better approach - as this seems complicated
>>>>>>>> (I
>>>>>>>> had
>>>>>>>> >> to
>>>>>>>> >> > do this with Tapestry, so I'm not sure if Wicket has a more
>>>>>>>> elegant
>>>>>>>> >> > approach).
>>>>>>>> >> >
>>>>>>>> >> > Any thoughts most welcome.
>
>>>>>>>> >> >
>>>>>>>> >> > Thanks, Graeme.
>>>>>>>> >> >
>>>>>>>> >>
>>>>>>>> >> --
>>>>>>>> >> View this message in context:
>>>>>>>> >>
>>>>>>>> http://www.nabble.com/Populate-IFRAME-innerHTML-on-AJAX-load-of-panel.-tp20887803p20888407.html
>>>>>>>> >> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > -----
>>>>>>>> > Bruno Borges
>>>>>>>> > blog.brunoborges.com.br
>>>>>>>> > +55 21 76727099
>>>>>>>> >
>>>>>>>> > "The glory of great men should always be
>>>>>>>> > measured by the means they have used to
>>>>>>>> > acquire it."
>>>>>>>> > - Francois de La Rochefoucauld
>>>>>>>> >
>>>>>>>>
>>>>>>>> --
>>>>>>>> View this message in context:
>>>>>>>> http://www.nabble.com/Populate-IFRAME-innerHTML-on-AJAX-load-of-panel.-tp20887803p20888901.html
>>>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> -----
>>>>>>> Bruno Borges
>>>>>>> blog.brunoborges.com.br
>>>>>>> +55 21 76727099
>>>>>>>
>>>>>>> "The glory of great men should always be
>>>>>>> measured by the means they have used to
>>>>>>> acquire it."
>>>>>>> - Francois de La Rochefoucauld
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/Populate-IFRAME-innerHTML-on-AJAX-load-of-panel.-tp20887803p20895692.html
>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>> ***************************************************************************************************
>>>>>> "Atenção: Esta mensagem foi enviada para uso exclusivo do(s)
>>>>>> destinatários(s) acima identificado(s),
>>>>>> podendo conter informações e/ou documentos confidencias/privilegiados
>>>>>> e
>>>>>> seu sigilo é protegido por
>>>>>> lei. Caso você tenha recebido por engano, por favor, informe o
>>>>>> remetente e
>>>>>> apague-a de seu sistema.
>>>>>> Notificamos que é proibido por lei a sua retenção, disseminação,
>>>>>> distribuição, cópia ou uso sem
>>>>>> expressa autorização do remetente. Opiniões pessoais do remetente não
>>>>>> refletem, necessariamente,
>>>>>> o ponto de vista da CETIP, o qual é divulgado somente por pessoas
>>>>>> autorizadas."
>>>>>>
>>>>>>
>>>>>> "Warning: This message was sent for exclusive use of the addressees
>>>>>> above
>>>>>> identified, possibly
>>>>>> containing information and or privileged/confidential documents whose
>>>>>> content is protected by law.
>>>>>> In case you have mistakenly received it, please notify the sender and
>>>>>> delete it from your system.
>>>>>> Be noticed that the law forbids the retention, dissemination,
>>>>>> distribution, copy or use without
>>>>>> express authorization from the sender. Personal opinions of the
>>>>>> sender
>>>>>> do
>>>>>> not necessarily reflect
>>>>>> CETIP's point of view, which is only divulged by authorized
>>>>>> personnel."
>>>>>> ***************************************************************************************************
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/Populate-IFRAME-innerHTML-on-AJAX-load-of-panel.-tp20887803p20896023.html
>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>> ***************************************************************************************************
>>>>> "Atenção: Esta mensagem foi enviada para uso exclusivo do(s)
>>>>> destinatários(s) acima identificado(s),
>>>>> podendo conter informações e/ou documentos confidencias/privilegiados
>>>>> e
>>>>> seu sigilo é protegido por
>>>>> lei. Caso você tenha recebido por engano, por favor, informe o
>>>>> remetente e apague-a de seu sistema.
>>>>> Notificamos que é proibido por lei a sua retenção, disseminação,
>>>>> distribuição, cópia ou uso sem
>>>>> expressa autorização do remetente. Opiniões pessoais do remetente não
>>>>> refletem, necessariamente,
>>>>> o ponto de vista da CETIP, o qual é divulgado somente por pessoas
>>>>> autorizadas."
>>>>>
>>>>>
>>>>> "Warning: This message was sent for exclusive use of the addressees
>>>>> above identified, possibly
>>>>> containing information and or privileged/confidential documents whose
>>>>> content is protected by law.
>>>>> In case you have mistakenly received it, please notify the sender and
>>>>> delete it from your system.
>>>>> Be noticed that the law forbids the retention, dissemination,
>>>>> distribution, copy or use without
>>>>> express authorization from the sender. Personal opinions of the sender
>>>>> do not necessarily reflect
>>>>> CETIP's point of view, which is only divulged by authorized
>>>>> personnel."
>>>>> ***************************************************************************************************
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/Populate-IFRAME-innerHTML-on-AJAX-load-of-panel.-tp20887803p20898545.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> ***************************************************************************************************
> "Atenção: Esta mensagem foi enviada para uso exclusivo do(s)
> destinatários(s) acima identificado(s),
> podendo conter informações e/ou documentos confidencias/privilegiados e
> seu sigilo é protegido por
> lei. Caso você tenha recebido por engano, por favor, informe o remetente e
> apague-a de seu sistema.
> Notificamos que é proibido por lei a sua retenção, disseminação,
> distribuição, cópia ou uso sem
> expressa autorização do remetente. Opiniões pessoais do remetente não
> refletem, necessariamente,
> o ponto de vista da CETIP, o qual é divulgado somente por pessoas
> autorizadas."
>
>
> "Warning: This message was sent for exclusive use of the addressees above
> identified, possibly
> containing information and or privileged/confidential documents whose
> content is protected by law.
> In case you have mistakenly received it, please notify the sender and
> delete it from your system.
> Be noticed that the law forbids the retention, dissemination,
> distribution, copy or use without
> express authorization from the sender. Personal opinions of the sender do
> not necessarily reflect
> CETIP's point of view, which is only divulged by authorized personnel."
> ***************************************************************************************************
>
>
--
View this message in context:
http://www.nabble.com/Populate-IFRAME-innerHTML-on-AJAX-load-of-panel.-tp20887803p20900076.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]