views:

3352

answers:

4

In the Render method of an ASP.NET web-control, I need to alter the output of the Html based on whether JavaScript is enabled or disabled on the clients browser,

Does anyone know the right incantation to figure that out?

+3  A: 

The noscript tag is used to define an alternate content (text) if a script is NOT executed.

EDIT: Hi Kieron, take a look at this link: Creating a Server Control for JavaScript Testing, and Detect if JavaScript is enabled in ASPX

Galwegian
I was looking for something a little more fine-grained than that. I actually need to render different elements if JS is disabled.e.g.<ul> <li> // JAVASCRIPT ENABLED <img ... /> // JAVASCRIPT DISABLED <input ... /> </li></ul>
Kieron
+1 for finding the same CP article =)
StingyJack
+7  A: 

The problem with using script to check whether javascript is enabled is that you only find that out after the script hasn't run.

Some solutions try the opposite - they use javascript to set a value and then supply Javascript enabled controls if that value is later detected. However, this fails with javascript-sometimes-enabled tools like the Firefox NoScript plugin.

A more robust solution is to always send the plain-HTML compatible control, and then have javascript run on page load to add the correct event handlers/extra DOM elements/etc.

However I don't know how this fits in with the ASP.NET approach takes to controls.

Gareth
I think you're right, it's probably better to assume that JS is disabled and then run script to transform the elements when it hits the client.Thanks.
Kieron
A: 

This is a way to check when a form is being submitted.

http://www.4guysfromrolla.com/webtech/082400-1.shtml

I dont think there is any Request property that will tell you when the page is first requested. There is a property that will tell you if the browser supports JS, but not if its enabled. See Here

StingyJack
+3  A: 

The browser does not communicate Javascript availability with the request.

One thing that I have done, though I'm not sure it is applicable in your case, is generate the page as if Javascript is not enabled, then have some Javascript that turns off the HTML-only stuff and turns on the HTML-Javascript stuff.

You could also have the first page hit "phone home" via Javascript to record in the session whether Javascript is enabled or not.

tvanfosson