2009-04-20 13 views

risposta

10

Supponendo che si stia scrivendo un'applicazione Web Java, una tecnica che ho usato con successo è che la prima pagina a cui si accede — in genere un modulo di login — scrive un cookie di sessione quando viene caricata la pagina. Quindi disporre del codice Java inviato dal modulo per verificare l'esistenza di tale cookie.

Sul client:

<script type="text/javascript"> 
    function createCookie(name, value, days) { 
    var expires = ""; 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
     expires = "; expires=" + date.toGMTString(); 
    } 
    var cookie = name + "=" + value + expires + "; path=" + "/"; 
    document.cookie = cookie; 
    } 
    createCookie("JavaScriptEnabledCheck", 1, 0); 
</script> 

Sul server:

/** 
* Returns <code>true</code> if the session cookie set by the login form 
* is not present. 
* 
* @param request The HTTP request being processed 
* @return <code>true</code> if JavaScript is disabled, otherwise <code>false</code> 
*/ 
private boolean isJavaScriptDisabled(HttpServletRequest request) 
{ 
    boolean isJavaScriptDisabled = true; 
    Cookie[] cookies = request.getCookies(); 

    if (cookies != null) 
    { 
    for (int i = 0; i < cookies.length; i++) 
    { 
     if ("JavaScriptEnabledCheck".equalsIgnoreCase(cookies[i].getName())) 
     { 
     isJavaScriptDisabled = false; 
     break; 
     } 
    } 
    } 

    return isJavaScriptDisabled; 
} 
0

Una cosa semplice sarebbe fare una richiamata dalla pagina, ad esempio una chiamata AJAX. Non penso che ci sia un altro modo per determinare questo, almeno non universalmente.

0

Stai provando a fare questo lato server o sul client in un'applet?

Se un browser non supporta javascript (o è spento), è altamente improbabile che abbiano il supporto per le applet Java.

3

Se viene eseguito un inoltro di modulo, è possibile inserire un input nascosto nel modulo e compilare il suo valore con javascript (da OnSubmit) e controllarlo dal lato server.

5

In yourform per voi può mettere il codice come questo:

<noscript> 
    <input type="hidden" name="JavaScript" value="false" /> 
</noscript> 

il parametro deve essere presentata solo se il browser ha gli script disattivati. Nelle vostre applicazioni Java è possibile controllare in questo modo:

boolean javaScript = request.getParameter("JavaScript") == null; 
+0

Mi piace questa idea ... ma è una soluzione cross-browser? Sembra che a IE6 piacerebbe fare casino. –

+1

Perchè lo dici? L'hai provato? – pjesi

0

Se si dispone di supporto PHP basta copiare e incollare il codice qui sotto.

<noscript> 
    <input type="hidden" name="JavaScript" value="false" /> 
</noscript> 
/*This code is developed by Lankeshwer(nick name only) and can be used as open source by anyone*/ 
<?PHP 
if($_POST['JavaScript']!='false'){ 
echo "<run your javascript code here>";} //replace this line with your actual javascript code 
else 
echo "<html><head><meta http-equiv="refresh" content="0;url=www.kharida.com"></head</html>"; 
?> 

vi auguriamo un in bocca al lupo e non dimenticare di rendere il codice aperto

Problemi correlati