<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Progressive Enhancement with CSS support</title>
	<atom:link href="http://ajaxian.com/archives/progressive-enhancement-with-css-support/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 09 Feb 2012 06:55:33 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
	<item>
		<title>By: ToddParker</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262153</link>
		<dc:creator>ToddParker</dc:creator>
		<pubDate>Mon, 17 Mar 2008 01:50:53 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262153</guid>
		<description>To follow up on Scott&#039;s Post: In case anyone&#039;s curious about how much of a performance impact running this test script is, head over to the Filament Group website because it uses this technique for the whole site. I think you&#039;ll see it does it&#039;s business with nothing more than a tiny blink (worst case) on the first page load. After that, the cookie makes the script and css swapping pretty much undetectable. Always looking for ideas on how to make this even faster. Check it out at: www.filamentgroup.com</description>
		<content:encoded><![CDATA[<p>To follow up on Scott&#8217;s Post: In case anyone&#8217;s curious about how much of a performance impact running this test script is, head over to the Filament Group website because it uses this technique for the whole site. I think you&#8217;ll see it does it&#8217;s business with nothing more than a tiny blink (worst case) on the first page load. After that, the cookie makes the script and css swapping pretty much undetectable. Always looking for ideas on how to make this even faster. Check it out at: <a href="http://www.filamentgroup.com" rel="nofollow">http://www.filamentgroup.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ToddParker</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262152</link>
		<dc:creator>ToddParker</dc:creator>
		<pubDate>Mon, 17 Mar 2008 01:31:23 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262152</guid>
		<description>@stevesnz: I&#039;m not sure you are really understanding the purpose of this approach. The idea is for each developer to make their own decision on what combination of html, css and js they they are comfortable initially serving up to every device, then the script will allow for &#039;hooks&#039; to add (or remove) additional css and scripts to the browsers that has passed the test in order to layer on a richer experience.  We&#039;re actually advocating just having these two versions (low and hi fidelity) to keep the complexity to a reasonable minimum, but each developer can decide how much to layer the experience based on their ability to fully test and maintain additional slices of device capabilities. 

The real point we&#039;re trying trying to make is that if you simply serve up a whole pile of complex css and js and don&#039;t manage what happens to devices that will misunderstand this code, you are leaving a lot of people out in the cold. We believe the web should be about providing content and functionality to everyone, not just the latest and greatest versions of popular browsers. 

The world we&#039;re coding for is getting more diverse and complex, not simpler because of the wide range or mobile phone, interactive TV, kiosks, gaming devices that are coming into the market with web access and &quot;non-standard&quot; rendering or js support. When you add to this environment the need to support those with disabilities and achieve section 508 compliance, we don&#039;t feel that it&#039;s responsible to &quot;basically disregard any browsers incapable of handling such basic standards&quot;.  Even though they may not be using FF 2 or IE 7, these are still real people (and potential customers) and turning them away because you wanted to use a js-dependent widget or complex CSS layout is really not an acceptable option.

Because Filament Group tends to specialize in building rich web apps, not simple content sites, we have made the choice to start by serving up a page that uses clean, semantic html, css (and sometimes a bit of js) that we believe will work everywhere. We keep the code as lightweight as possible  because many people have slower web connections and less memory. If the client passes the test, we can feel more confident that layering in all the code for a richer experience will not case rendering or functionality issues. We want to play it safe with which browsers pass because it would be a shame for a device to receive a perfectly usable lo-fi version, then be upgraded to the hi-fi version and have some little css or js issue make the site unusable. 

This approach is admittedly a work in progress (and it&#039;s great to hear all the interesting dialog coming from our post) but it does provide a reasonable way to achieve something close to universal access for rich web experiences, all with a unified code base and manageable testing requirements. Hopefully, the web community can all help us refine this idea and reach the common goal of providing true accessibility to all without an unmanageable mountain of code.</description>
		<content:encoded><![CDATA[<p>@stevesnz: I&#8217;m not sure you are really understanding the purpose of this approach. The idea is for each developer to make their own decision on what combination of html, css and js they they are comfortable initially serving up to every device, then the script will allow for &#8216;hooks&#8217; to add (or remove) additional css and scripts to the browsers that has passed the test in order to layer on a richer experience.  We&#8217;re actually advocating just having these two versions (low and hi fidelity) to keep the complexity to a reasonable minimum, but each developer can decide how much to layer the experience based on their ability to fully test and maintain additional slices of device capabilities. </p>
<p>The real point we&#8217;re trying trying to make is that if you simply serve up a whole pile of complex css and js and don&#8217;t manage what happens to devices that will misunderstand this code, you are leaving a lot of people out in the cold. We believe the web should be about providing content and functionality to everyone, not just the latest and greatest versions of popular browsers. </p>
<p>The world we&#8217;re coding for is getting more diverse and complex, not simpler because of the wide range or mobile phone, interactive TV, kiosks, gaming devices that are coming into the market with web access and &#8220;non-standard&#8221; rendering or js support. When you add to this environment the need to support those with disabilities and achieve section 508 compliance, we don&#8217;t feel that it&#8217;s responsible to &#8220;basically disregard any browsers incapable of handling such basic standards&#8221;.  Even though they may not be using FF 2 or IE 7, these are still real people (and potential customers) and turning them away because you wanted to use a js-dependent widget or complex CSS layout is really not an acceptable option.</p>
<p>Because Filament Group tends to specialize in building rich web apps, not simple content sites, we have made the choice to start by serving up a page that uses clean, semantic html, css (and sometimes a bit of js) that we believe will work everywhere. We keep the code as lightweight as possible  because many people have slower web connections and less memory. If the client passes the test, we can feel more confident that layering in all the code for a richer experience will not case rendering or functionality issues. We want to play it safe with which browsers pass because it would be a shame for a device to receive a perfectly usable lo-fi version, then be upgraded to the hi-fi version and have some little css or js issue make the site unusable. </p>
<p>This approach is admittedly a work in progress (and it&#8217;s great to hear all the interesting dialog coming from our post) but it does provide a reasonable way to achieve something close to universal access for rich web experiences, all with a unified code base and manageable testing requirements. Hopefully, the web community can all help us refine this idea and reach the common goal of providing true accessibility to all without an unmanageable mountain of code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stevesnz</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262151</link>
		<dc:creator>stevesnz</dc:creator>
		<pubDate>Sun, 16 Mar 2008 23:56:02 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262151</guid>
		<description>yuk

do not like at all

you&#039;re going to end up having to write and support 2 or maybe even 3 versions of your css and you&#039;ll end up getting all paranoid about things like &quot;oh my site doesn&#039;t look correct for people using IE4 from a cell phone, must now spend 10 hours correcting&quot;.  

far better solution is to use a solid css framework or templates and basically disregard any browsers incapable of handling such basic standards.</description>
		<content:encoded><![CDATA[<p>yuk</p>
<p>do not like at all</p>
<p>you&#8217;re going to end up having to write and support 2 or maybe even 3 versions of your css and you&#8217;ll end up getting all paranoid about things like &#8220;oh my site doesn&#8217;t look correct for people using IE4 from a cell phone, must now spend 10 hours correcting&#8221;.  </p>
<p>far better solution is to use a solid css framework or templates and basically disregard any browsers incapable of handling such basic standards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ScottJehl</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262142</link>
		<dc:creator>ScottJehl</dc:creator>
		<pubDate>Sun, 16 Mar 2008 14:38:58 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262142</guid>
		<description>@cromwellian: If you check out the article on Filament&#039;s site, you&#039;ll see that a cookie is dropped so that a browser is only tested one time (if it passes). This will tell the test to auto-pass on every following page load. This cookie could also be detected on the back-end to serve a high-end experience from the start.

Also, please take a look at the tests that occur and the resulting matrix of browsers that pass or fail. Chris&#039;s mention of the box model test is only a portion of what takes place. We have made this division of experiences without the use of sniffing, but rather by testing for features and handling. Please note that &#039;failing&#039; the test simply means a different, yet still functional, experience.

Simply sniffing may not tell us what we want to know. We don&#039;t care who you are (device-wise), we just want to know which level of experience suits you best. &lt;a href=&quot;http://www.filamentgroup.com/lab/delivering_the_right_experience_to_the_right_device/#commentNumber7&quot; rel=&quot;nofollow&quot;&gt;Even A-grade browsers can be turned into B-grade browsers by changing preferences around&lt;/a&gt;. 

We think the technique has merit and we&#039;d love some help to make it even better. Also please check out the comments on &lt;a href=&quot;http://ejohn.org/blog/progressive-css-enhancement/&quot; rel=&quot;nofollow&quot;&gt;John Resig&#039;s article&lt;/a&gt; as well, as many of these issues have been discussed there already.

Thanks!</description>
		<content:encoded><![CDATA[<p>@cromwellian: If you check out the article on Filament&#8217;s site, you&#8217;ll see that a cookie is dropped so that a browser is only tested one time (if it passes). This will tell the test to auto-pass on every following page load. This cookie could also be detected on the back-end to serve a high-end experience from the start.</p>
<p>Also, please take a look at the tests that occur and the resulting matrix of browsers that pass or fail. Chris&#8217;s mention of the box model test is only a portion of what takes place. We have made this division of experiences without the use of sniffing, but rather by testing for features and handling. Please note that &#8216;failing&#8217; the test simply means a different, yet still functional, experience.</p>
<p>Simply sniffing may not tell us what we want to know. We don&#8217;t care who you are (device-wise), we just want to know which level of experience suits you best. <a href="http://www.filamentgroup.com/lab/delivering_the_right_experience_to_the_right_device/#commentNumber7" rel="nofollow">Even A-grade browsers can be turned into B-grade browsers by changing preferences around</a>. </p>
<p>We think the technique has merit and we&#8217;d love some help to make it even better. Also please check out the comments on <a href="http://ejohn.org/blog/progressive-css-enhancement/" rel="nofollow">John Resig&#8217;s article</a> as well, as many of these issues have been discussed there already.</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cromwellian</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262139</link>
		<dc:creator>cromwellian</dc:creator>
		<pubDate>Sun, 16 Mar 2008 06:59:07 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262139</guid>
		<description>I&#039;m still somewhat put off by this approach, it just seems way too inefficient.

Seems to me that in a non-trivial app, you could end up with a combinatorial explosion of these tests, ballooning the app size and startup time. Consider the awesome variety of ways that the spectrum of browsers fail on standards support, not just box model, but AcidTest du jour times browser type times browser version. 

And then there&#039;s failures that are hard or impossible to detect, like rendering errors, pathological performance gotchas, and strange memory leaks, not to mention mobile browsers where events don&#039;t work like you expect (hello iPhone and mouse events)

The thing is, these tests run each and every time someone visits the page, whereas you could run these tests across a large sample of the browser space, save the results to a browser sniffing database, and then evaluate everything at compile time. 

If you fail to recognize a browser when sniffing, either a) fall back to the tests or b) punt. The likely case is, you&#039;ll still be serving 99.9% of the market until its fixed.

At the least, use a cookie to remember that the tests have been run and what the results are, so you can select a code base preoptimized for those results

I just don&#039;t like the idea of having to pay for these tests *every time*. It generates suboptimal code runtime performance, size, and excessive network traffic, and lets you deal with a tiny percentage of the browser market that won&#039;t be cause by sniffing.</description>
		<content:encoded><![CDATA[<p>I&#8217;m still somewhat put off by this approach, it just seems way too inefficient.</p>
<p>Seems to me that in a non-trivial app, you could end up with a combinatorial explosion of these tests, ballooning the app size and startup time. Consider the awesome variety of ways that the spectrum of browsers fail on standards support, not just box model, but AcidTest du jour times browser type times browser version. </p>
<p>And then there&#8217;s failures that are hard or impossible to detect, like rendering errors, pathological performance gotchas, and strange memory leaks, not to mention mobile browsers where events don&#8217;t work like you expect (hello iPhone and mouse events)</p>
<p>The thing is, these tests run each and every time someone visits the page, whereas you could run these tests across a large sample of the browser space, save the results to a browser sniffing database, and then evaluate everything at compile time. </p>
<p>If you fail to recognize a browser when sniffing, either a) fall back to the tests or b) punt. The likely case is, you&#8217;ll still be serving 99.9% of the market until its fixed.</p>
<p>At the least, use a cookie to remember that the tests have been run and what the results are, so you can select a code base preoptimized for those results</p>
<p>I just don&#8217;t like the idea of having to pay for these tests *every time*. It generates suboptimal code runtime performance, size, and excessive network traffic, and lets you deal with a tiny percentage of the browser market that won&#8217;t be cause by sniffing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PeterMichaux</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262137</link>
		<dc:creator>PeterMichaux</dc:creator>
		<pubDate>Sun, 16 Mar 2008 02:24:26 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262137</guid>
		<description>Contributors on comp.lang.javascript have been promoting testing CSS support like this for quite a few years. I used a technique like this in my recent article to test for display:none support before enabling a tabbed pane widget: http://peter.michaux.ca/article/7217</description>
		<content:encoded><![CDATA[<p>Contributors on comp.lang.javascript have been promoting testing CSS support like this for quite a few years. I used a technique like this in my recent article to test for display:none support before enabling a tabbed pane widget: <a href="http://peter.michaux.ca/article/7217" rel="nofollow">http://peter.michaux.ca/article/7217</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Morgan Roderick</title>
		<link>http://ajaxian.com/archives/progressive-enhancement-with-css-support/comment-page-1#comment-262129</link>
		<dc:creator>Morgan Roderick</dc:creator>
		<pubDate>Sat, 15 Mar 2008 10:23:48 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/archives/progressive-enhancement-with-css-support#comment-262129</guid>
		<description>Some very interesting thoughts ... but it would certainly increase the overall complexity and not to mention the rendering speed of the pages. For mostly static sites this technique would probably be overkill, but for very dynamic applications, I imagine that techniques such as this one, could help remove a lot of the frustrations of supporting user-agents with very different capabilities.

One thing to consider though, is that user-agents capabilities change over time, so you&#039;re going to be constantly evaluating what &quot;enhanced&quot; really means for your site.

Relying on javascript to ensure sexy rendering, might also be a barrier for some, and might not be considered &lt;i&gt;defensive&lt;/i&gt;.

I&#039;ve already adopted Chris&#039; technique of adding a classname to the body element, when javascript is enabled, which allows me greater control in styling my content for javascript-disabled browsers.</description>
		<content:encoded><![CDATA[<p>Some very interesting thoughts &#8230; but it would certainly increase the overall complexity and not to mention the rendering speed of the pages. For mostly static sites this technique would probably be overkill, but for very dynamic applications, I imagine that techniques such as this one, could help remove a lot of the frustrations of supporting user-agents with very different capabilities.</p>
<p>One thing to consider though, is that user-agents capabilities change over time, so you&#8217;re going to be constantly evaluating what &#8220;enhanced&#8221; really means for your site.</p>
<p>Relying on javascript to ensure sexy rendering, might also be a barrier for some, and might not be considered <i>defensive</i>.</p>
<p>I&#8217;ve already adopted Chris&#8217; technique of adding a classname to the body element, when javascript is enabled, which allows me greater control in styling my content for javascript-disabled browsers.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

