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: users@wicket.apache.org
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]

Reply via email to