Hi a cowerker here might have found something here. We have fix the issue by replacing the *Wicket.replaceOuterHtml* function.
Could this be a BUG? I have forwarded the initial message that explains the behavior. Here is the code that fixed our problem: f(t) // -------------------------------------------------------------------------------- // Hack that demonstrates a possible fix for a problem with Gecko based browsers. // The problem happens in this line: // var fragment = range.createContextualFragment(text); // If there are many subpanels, the range uncorrectly parses the content, resulting // in a fragment that contains many childs instead of one. // The first child is the first subpanel, and the rest are the other subpanels, // which are incorrectly hang at the same level as the main panel, instead of being // childs of it. function replaceWicketReplaceOuterHtml() { Wicket.replaceOuterHtml = function(element, text) { if (Wicket.Browser.isIE()) { Wicket.replaceOuterHtmlIE(element, text); } else if (Wicket.Browser.isSafari() || Wicket.Browser.isOpera()) { Wicket.replaceOuterHtmlSafari(element, text); } else /* GECKO */ { // create range and fragment var range = element.ownerDocument.createRange(); range.selectNode(element); var fragment = range.createContextualFragment(text); // The following code seems useless, and then is commented out // get the elements to be added //var elements = new Array(); //for (var i = 0; i < fragment.childNodes.length; ++i) //elements.push(fragment.childNodes[i]); // move additional subnodes to the correct place in the dom if (fragment.childNodes.length > 1) { // the for clause intentionally starts from 1, // to fix only the wrongly hanging subnodes. for (var i = 1; i < fragment.childNodes.length; ++i) { var otherNode = fragment.childNodes[i]; fragment.childNodes[0].childNodes[0].appendChild(otherNode); } } element.parentNode.replaceChild(fragment, element); } } } window.setTimeout(replaceWicketReplaceOuterHtml, 1000); // -------------------------------------------------------------------------------- ---------- Forwarded message ---------- From: Francisco Diaz Trepat - gmail <[EMAIL PROTECTED]> Date: Oct 23, 2007 10:27 PM Subject: Re: Ajax Panel Replacement Issue on Fireforx only (Kind of Complex Scenario) To: users@wicket.apache.org Thanks Matej, I will but further ahead. I'll try to see what is going on with more detail by using FIREBUG toolbar or something of the sort. If everything else fails I'll provide a QuickStart. Thanks, f(t) On 10/23/07, Matej Knopp <[EMAIL PROTECTED]> wrote: > > Can you provide a quickstart? > > -Matej > > On 10/23/07, Francisco Diaz Trepat - gmail > <[EMAIL PROTECTED]> wrote: > > Hi. I'm going to try to explain the best that I can and without posting > code > > at first the issue that is happening. > > > > I have the following panels A and C. A has two instances of B nested > inside > > of it. C is empty: > > > > [ > > > > ==PANEL-A== > > > > [ > > > > ==PANEL-B1== > > > > ] > > > > [ > > > > ==PANEL-B2== > > > > ] > > > > ] > > > > > > [ > > ==PANEL-C== > > ] > > > > What happens is that on another Panel that represent the Page content, > lets > > call it ContentPanel I need to toggle between panels A and C with the > click > > of an Ajax Link. > > > > The first state is with panel C that it is empty (actually with lots of > > HiddenFields, but empty visually). On click I need to Show the A panel > that > > has viewable content. Finally on another click I need to go back to the > > original state of C panel. > > > > So far so good. The issue is as follows: > > > > The problem happens on Firefox only (latest version 2.0.0.8) (on IE 6 > and 7 > > it is not an issue as everything works fine). > > > > What happens is that I click on the link, and panel A shows perfectly. > But > > when I click again to put the C panel back, the A panel gets Partially > > removed, that is panel A's first panel B instance B1 gets removed, but > B2 is > > not removed and it is still visible, plus I get the C panel, as C panel > > doesn't have viewable content it doesn't add to the visual problem. > *Ej*: > > > > [ > > > > ==PANEL-A== > > > > > > [ > > > > ==PANEL-B2== > > > > ] > > > > ] > > > > [ > > ==PANEL-C== > > ] > > > > Now If I click again, I get Panel A with "2 instances of B2" as panel B2 > was > > not removed. > > [ > > > > ==PANEL-A== > > > > [ > > > > ==PANEL-B1== > > > > ] > > > > [ > > > > ==PANEL-B2== > > > > ] > > > > [ > > > > ==PANEL-B2== > > > > ] > > > > ] > > > > So and so forth every click and click, I get panel A partially removed > and > > when added again I have another instance of B2 as it is never removed. > > > > > > > > Any Ideas? > > > > thanks, > > > > f(t) > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >