I know it may seem like a controversial thing to ask, but I'm asking seriously.
When you design a web application today, do you plan for graceful degradation if someone has JavaScript turned off? If so, why?
I am trying to figure out the cost/benefit ratio of graceful degradation. I've spent some time online with JavaScript turned off today and it wasn't a pleasant experience. My guess is that very few have it switched off. JavaScript penetration is estimated around 98%.
Accessibility used to be the reason, but should be no more: you can create accessible sites with JavaScript.
Mobile devices? Dominant mobile browsers now support JavaScript.
So what are your reasons for graceful degradation?
The trick is not to think in terms of 'supporting graceful degradation', but in terms of 'javascript enhancements'.
Which means, do your entire app to work in html. Then add javascript wherever you can to enhance the app.
Force all your javascript to run /after/ the page loads, it's a constraint that will stop you from cheating.
An example is a delete button. Do it in html as so:
Then, with your framework of choice (jquery here): (Code untested)So instead of the delete button causing you to go to a new page, it will just popup a confirmation, and when you click 'ok' will do the ajax call, and change the button into a 'Deleted!' message.
With a decent framework, the code to 'enhance' will maybe add a tiny bit of overhead in terms of loc and time, (this example for instance, 3 lines more than if it was javascript only).
But you get a much easier to debug app and it works everywhere to boot.