Detect when JavaScript is disabled in ASP.NET

2020-07-05 06:37发布

问题:

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?

回答1:

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.



回答2:

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



回答3:

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.



回答4:

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



回答5:

What you need to do is this. After much testing and late nights, I decided to use the most simple solution. Drag a label onto the top of the page and make sure it reads "run at server". Then, for the Text attribute, put Text="This website requires Javascript". That should be the best answer. :D