I don't like it for some reason. This way the server tree will know about invisible component, while the client (DOM) tree will have no component at all.
I think "display: none" should be used. On Mon, Sep 12, 2011 at 6:57 PM, Igor Vaynberg <[email protected]> wrote: > why not just remove the node using removeChild(x)? > > -igor > > On Mon, Sep 12, 2011 at 8:32 AM, Martin Grigorov <[email protected]> wrote: >> Hi, >> >> Recently I had to investigate a problem where a component associated >> with <tfoot> didn't disappear after : comp.setVisible(false) + >> target.add(comp). >> The problem was that comp.setOutputMarkupPlaceholderTag(true) was >> missing and the Ajax response for this component looked like: >> <component id="component2" ><![CDATA[]]></component> >> >> Looking at wicket-ajax.js' replaceOuterHtmlXyz() methods I can see >> just unspecified behavior for the case when the new component's text >> representation is "". >> >> For IE and Safari we do: >> oldElement.outerHTML = text; >> >> For Gecko: >> var fragment = range.createContextualFragment(text); >> element.parentNode.replaceChild(fragment, element); >> >> So it seems like the old component should be replaced with new text >> node without value, but it seems there are browser inconsistencies >> like TFOOT in IE7 which just prevent the replacement. >> >> My question is: are there any use cases which rely on the old >> component to be replaced by empty text node instead of <oldName >> style="display:none"></oldName> ? >> >> Just ignore the fact that any following comp.setVisible(true) + >> target.add(comp) wont work. We already know that. >> >> I'm thinking to add a warning log for such cases (invisible w/o >> placeholder tag added to the target) but maybe someone relies on this >> behavior. >> >> -- >> Martin Grigorov >> jWeekend >> Training, Consulting, Development >> http://jWeekend.com >> > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com
