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]