Well done Graeme! =)
Now, please create a Wiki page with all this information, for God's sake! cheers, bruno -----Original Message----- From: Graeme Knight [mailto:[EMAIL PROTECTED] Sent: Monday, December 08, 2008 3:46 PM To: users@wicket.apache.org Subject: RE: Populate IFRAME innerHTML on AJAX load of panel. 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: users@wicket.apache.org > 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: users@wicket.apache.org >>>>> 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: 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] >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> 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] *************************************************************************************************** "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." ***************************************************************************************************