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.-tp20887803p20896892.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]

Reply via email to