- From: Steven Simpson <ss@comp.lancs.ac.uk>
- Date: Fri, 06 Jan 2012 11:25:05 +0000
- To: www-style@w3.org
- Message-ID: <4F06DA11.6090706@comp.lancs.ac.uk>
On 03/01/12 20:47, Nicholas C. Zakas wrote: > 1. Start with <html class="js-disabled"> and then remove the > "js-disabled" class using JavaScript later in the page. > 2. Simply adding "js-enabled" to <html> using JavaScript (YUI uses > this method, adding "yui3-js-enabled" when initialized). > > This is all done so we can hide/show or otherwise change the display > based on JavaScript availability, such as: > > .js-disabled .foo { display: none; } > .js-enabled .bar {display: block; } (I'll call that 'root class insertion'.) > I'd like to propose adding "script" support for media queries, so you > can write queries such as: > > @media screen and (script) { > ... > } What if some scripts are enabled, and others not? I'm frequently in this situation using the NoScript Firefox extension while on a site that loads scripts from several domains. A simple 'script' media feature can't cover this, while root class insertion can, though it could still be problematic for third-party scripts, as you have to either tell them how to edit your page, or trust that they won't edit the same page in conflicting ways. 'script' could be parameterized with the URL of the script, which would surely cover most cases of script selection. (Should it also optionally include the script MIME type too?) @media screen and (script(http://foo.example.com/foo.js)) { ... } Alternatively (or independently), define an extensible, namespaced feature space which scripts can interact with. In CSS: @namespace foo"http://foo.example.com/"; @media screen and (foo|script-a) and (foo|script-b) { ... } In the script: document.setMediaFeature("http://foo.example.com/", "script-a", true); document.setMediaFeature("http://foo.example.com/", "script-b", true); I dare say, however, it's easier just to let third-party scripts /carefully/ insert a unique-ish class into the root element. It's much more robust than a binary 'script' feature, almost as robust as using namespaces, and much less verbose than either namespaces or 'script(url)'. Cheers, Steven
Received on Friday, 6 January 2012 11:25:32 UTC