On Dec 16, 7:05 am, "Claus Reinke" <claus.rei...@talk21.com> wrote: > There is a widespread pattern on the web that I don't understand. > > I start with the problem statement, then suggest a workaround > that I would like to get feedback on. I close with the suggestion > that the interplay of CSS and noscript could be improved by a > :noscript CSS-pseudoselector. NAK. Hasty conclusion.
> Take Google+ as an example, though there are many Javascript- > using sites with similar issues. Pages start with something like > > <style> > body { visibility: hidden; } > </style> > > and then Javascript is used to override that default. For instance > > https://plus.google.com/111191895515210271225/posts/HN2ZTbf7Cgg > > I assume there is some rationale for hiding content by default? > Perhaps it is that if one shows content by default, there would > be a flash of uncontrolled content before the scripts run. > > The problem is that users who disable Javascript by default see > nothing at all on such sites, even though the content could be > read just fine by removing the default styling. Try the example. > ACK. > If the rationale above is correct, there would seem to be a simple > workaround, which is to hide content via a css class, and to attach > that class dynamically, before the content is parsed and rendered. > That way content is hidden by default only when script is enabled: > You could do that, sure. > .. > <style> > .script .hidden {display:none} > </style> > </head> > > <body> > > <script> > document.body.className = "script"; > </script> > > <!-- no script: text visible --> > <!-- with script: text not visible by default, > can be made visible by script, when ready > --> > <div class="hidden"> > hear this > </div> > .. > > Am I missing something here? If this works as expected, then > why do major players like Google+ (don't get me started on > Twitter) fail to make their content accessible to non-Javascript > users? > Willful ignorance? The problems with such approaches have been discussed for over 10 years. > While looking into this, it occurred to me that the noscript > element isn't half as useful as it could be - in particular, we > might be better of with script/noscript CSS-pseudoselectors: > > <style> > :script { display: none } > </style> > > I would like your feedback on these observations: am I on > the right track? > A browser supporting JavaScript itself is usually not enough. A few things like `window` or `document` can be safely assumed. Beyond that requires feature testing. if(document.body) { document.body.className = "foo-support"; } -- Garrett Twitter: @xkit -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/jsmentors@jsmentors.com/ To search via a non-Google archive, visit here: http://www.mail-archive.com/jsmentors@googlegroups.com/ To unsubscribe from this group, send email to jsmentors+unsubscr...@googlegroups.com