Script javascript: Onclick e link accessibili con javascript disattivato

   difficoltà:  script script script script script

Script simili
2/11/2007


Capita spesso di usare funzioni javascript per aprire link, o popup, o inviare dati in modo asincrono ad una pagina per aggiornare i contenuti con ajax. Bisogna però tenere conto che se l'utente ha javascript disattivato non potrà seguire i link, o aggiornare le pagine. Nonostante la maggior parte dei browser abbia solitamente javascript attivo, bisogna pensare che i dispositivi mobile, cellulari e quant'altro non sempre riescono a leggere javascript in modo corretto. Inoltre gli spider dei motori di ricerca non seguiranno i link e non aggiorneranno le pagine con ajax, non indicizzando così tutte le pagine.

La soluzione è dare una doppia possibilità al browser, una per chi ha javascript attivato e una per chi non ha javascript attivato. Vediamo un esempio di due link che utilizzano javascript:

<a href="#" onclick="funzionejs();">testo link</a>
<a href="javascript:funzionejs();">testo link</a>

questi link al click dell'utente eseguiranno la funzione javascript funzionejs. Nel caso però javascript non sia attivato non succederà nulla.

Per ovviare al problema possiamo scrivere:
<a href="alternativa.htm" onclick="funzionejs();return false;">testo link</a>

Cosa succederà in questo caso? se javascript è disattivato funzionerà il link alternativa.htm, se no verrà eseguita la funzione javascript. return false impedisce che venga aperto l'indirizzo presente in href quando viene eseguita la funzione.

Questo vale anche per i form. per esempio:
<script>
function invia(){
if(document.getElementById("campo").value!=""){
document.getElementById("idform").submit();
}else{
alert("Compilare il campo");
}
}
</script>

<form action="inviaform.php" id="idform" onsubmit="invia();return false;">
<input type="text" id="campo" name="campo">
<input type="submit">
</form>

Nel caso in cui javascript non sia attivo manda comunque il form, senza fare i controlli, che dovranno essere fatti comunque lato server (php, asp o altro).

Lo stesso vale per richieste asincrone in ajax. Conviene sempre dar la possibilità di ricaricare la pagina completa con i nuovi contenuti, passando per esempio via querystring le variabili per modificare la pagina.





Commenti


  crotalo

17/7/2009 22:06:16

mi serve un metodo per disativare (o impedire) il funzionamento dei pusanti Avanti e Indietro del browser (le due frecce in alto a destra)



Lascia un commento


Codice di controllo*:
Nome*:
Email/Link:
Testo*:
 
I campi contrassegnati con * sono obbligatori.