Here is a test of the display attribute. Apparently using inline styles will make the display style initially visible via JS.
-Andrew Martinez <<checkDisplay.html>> -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martinez, Andrew Sent: Thursday, May 25, 2006 2:20 PM To: [email protected] Subject: RE: [Rails-spinoffs] Hide content before page load To correct myself: toggle doesn't maintain an array state of visibility (this was from another JS library I used) I was digging deeper into how toggle works and I forgot to check this function: visible: function(element) { return $(element).style.display != 'none'; Which is what prototype's toggle uses to decide if an element should be hidden or not. Technically speaking, even if style.display is not readable, "none" != "" thus this should return visible and attempt to hide the object. In the case stated two emails ago, I would assume dynamicCSS.js is setting display to some value. However that would mean that toggle would evaluate correctly. It is not so one of two things is happening. 1) dynamicCSS.js is setting visibility and not display or 2) Something else is going on, like dynamicCSS.js is setting some other attribute you wouldn't expect or possibly the parent? (far fetched) I'm not familiar with dynamicCSS.js (or whatever it is) so I can only speculate. Either way, if you use CSS to hide an item by default, you will have to unhide it with JS the first time to properly use toggle. I just always use element.style.display ="dispVal" and avoid this problem. Rarely is there a situation where a toggle function works better. -Andrew Martinez -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martinez, Andrew Sent: Thursday, May 25, 2006 2:03 PM To: [email protected] Subject: RE: [Rails-spinoffs] Hide content before page load The reason for this is because if the element.style.display and element.style.visibility are not always visible via JS calls. This means you can not probe elements that use class names and inline styles for their default state. After JS is used to alter the state of display, it then becomes a readable attribute (I don't know why). Toggle attempts to avoid this issue by not probing the object at all. Toggle assumes that the element will be visible by default and sets style.display = "none" as the first action. It also keeps an array of the state of all objects toggle has touched. Since it assumes items are visible the first time, the stored state is corrupt. Therefore, to use toggle the element must be visible the first time it is called. I know of no work around. Toggle could be changed to attempt a style look up, however then toggle's behavior will be inconsistent between JS touched and non-touched JS elements. -Andrew Martinez -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dirk Eschler Sent: Thursday, May 25, 2006 1:38 PM To: [email protected] Subject: [Rails-spinoffs] Hide content before page load Hi, i've been experimentating with dynamicCSS.js [1] to hide content only if JavaScript is enabled. It works pretty well and fires before onload to avoid the flash of visible content. Now i'm wondering if there is a Prototype way of doing this. [1] http://www.bobbyvandersluis.com/articles/dynamicCSS.php My main problem is that Prototype functions like Element.toggle() do not work on elements that were used together with the dynamically created styles. Best Regards, Dirk Eschler -- Dirk Eschler <mailto:[EMAIL PROTECTED]> http://www.krusader.org _______________________________________________ Rails-spinoffs mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs _______________________________________________ Rails-spinoffs mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs _______________________________________________ Rails-spinoffs mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffsTitle: Test Display
I am a div with inline styles
I am a div with styles defined by a CSS class
I am a div with styles defined via JS (element.style)
HI! - Andrew Martinez
_______________________________________________ Rails-spinoffs mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs
