2009-06-04 17 views
9

E 'possibile verificare se il browser client ha javascript abilitato dal codice ASP.NET?Verifica se Javascript è abilitato lato server ASP.NET

Speravo di farlo idealmente su PreRender dei controlli, o PageLoad, in modo da poter cambiare il loro aspetto.

Qualsiasi suggerimento, soluzione, ecc. Sarebbe molto apprezzato.

risposta

7

Non puoi farlo, senza fare una richiesta successiva ho paura.

Ci sono delle spiegazioni che si possono trovare facendo una ricerca su Google, più utilizzare una chiamata AJAX o un campo nascosto che viene popolata tramite qualche javascript, che non verrà eseguito se Javascript è disabilitato.

Se si deve fare, proverei a farlo alla prima richiesta dal client e salvare un cookie (o qualcosa di simile), quindi controllare il valore del cookie sulle richieste successive. Ciò presuppone che l'utente non abiliti/disabiliti Javascript spesso. È anche possibile memorizzare un valore nella sessione.

Mi auguro che aiuta

+0

speravo in qualcosa di più pulito, ma se questo è l'unico modo che si può fare ... ti infilarlo nella una sessione var e ha un metodo accessor per renderlo più pulito. – Fermin

7

Page.Request.Browser.EcmaScriptVersion indicherà cosa ASP.NET pensa sia vero. Ciò presuppone che i BrowserCaps siano corretti. Ti dà un'indicazione di primo passaggio che è probabilmente abbastanza vicina.

EDIT: Inizialmente ho frainteso la domanda (abilitata contro supportata). È possibile utilizzare il lato server BrowserCaps per eliminare gli UserAgent che non supportano JavaScript. Quindi utilizzare una riga di script su ogni richiesta per determinare se è abilitato tramite biscotto:

// let the server know JavaScript is enabled via session cookie 
document.cookie = "js=1; path=/"; 

Poi rilevare l'esistenza sul lato server:

HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("js"); 
bool js = (cookie != null) && (cookie.Value == "1"); 

Una volta che chiudono il browser il cookie andrà via.

Problemi correlati