tags:

views:

111

answers:

6

Is there a way to test to see if javascript is enabled to ensure an application that required javascript is not initiated when it is disabled or otherwise not available?

A: 

Not on initial load. You can try to use tricks like setting a cookie in JavaScript and check it on subsequent requests. The best way is to ensure that your site works without JavaScript, and use JavaScript to provide a better experience.

PatrikAkerstrand
what about applications that explicitly use javascript ie gmail?
Tim
@user270797, My Gmail doesn't require Javascript. Gmail has an HTML-only version, which uses Javascript for small added features, such as searching contacts live.
strager
+2  A: 

There is <noscript>.

strager
remember the caveat with noscript - even if it is not used, it does not guarantee that javascipt is available or working correctly. You can see this by using Firefox Web Developer to turn off javascript.
Colin Pickard
@Colin: NoScript users will suffer the same: http://stackoverflow.com/questions/993387/noscript-tag-javascript-disabled-warning-and-google-penalty/993461#993461
Marcel Korpel
A: 

You could create a page with <noscript> content, and have that redirect using javascript to your actual application

Colin Pickard
+3  A: 

By default, serve the no-Javascript version. Use Javascript to immediately redirect the user to the Javascript version (which will only work if Javascript is enabled).

strager
+2  A: 

The scenario is:

  1. Visitor makes first request to your site
  2. Deliver a page which sets two cookiesl one with javascript, another with your server side language.
  3. Header or Meta redirect to another page for testing.
  4. On test page, check if you received the server delivered cookie to see if cookie support is enabled, and test if javascript cookie was received for JS support enabled.
  5. Enjoy your new found knowledge.
h0tw1r3
+2  A: 

I tend to use the following way.

1) show an error message per default

<div id="noJS">For use, you need JavaScript enabled. (nice images and perhaps a link to your fav. browser)</div>

2) disable it via javascript and show the main app's container

$("#noJS").hide();
$("#app").show();

If javascript is only needed for e.g. navigation, you should try to deliver a non-js version for non-js users in order to increase your audience.

henchman
stackoverflow uses this technique too (to display a red banner at the top of the page)
Colin Pickard
I would expand 'js' to 'JavaScript' in a message like this. Many end users may have no clue what 'js' is.
scunliffe
corrected it, though it was more meant to be an example :-)
henchman
That's jQuery. Might be worth mentioning this.
Dan