Best Practice in JavaScript e xHTML

Giusto un mese fa, in Smashing Magazine, è comparso un post (che usa come “base della discussione” anche la libreria JavaScript jQuery) interessante che riporta una serie di linee guida nell’uso di JavaScript: in particolare viene posta molta attenzione sulla possibilità che il browser non sia in grado di eseguire il codice JavaScript (come spesso accade in molti PDA).

La mia attenzione è stata catturata in particolare dalla regola numero 2: NEVER Depend on Javascript.

Bad practice

<script language="javascript">
var now = new Date();
if(now.getHours() < 12)
document.write('Good Morning!');
else
document.write('Good Afternoon!');
</script>

Soluzione proposta

<p title="Good Day Message">Good Morning!</p>
var now = new Date();
if(now.getHours() >= 12)
{
var goodDay = $('p[title="Good Day Message"]');
goodDay.text('Good Afternoon!');
}

Non sono molto d’accordo circa il best practice proposto, motivo: una parte dei contenuti viene ancora generata dinamicamente via JavaScript , sottraendo quindi questi ultmi all’indicizzazione da parte dei motri di ricerca (ricordo che i motori di ricerca non “eseguono” gli script presenti o “invocati” nella pagina). In sostanza, come sostiene da tempo il mio caro amico Francesco Boschian: tutti i contenuti devono essere sempre presenti nella pagina, non generati “dinamicamente” via scripting (vedere come buon esempio il sito della Apple).

Qui di seguito propongo una soluzione molto “artiginale e grezza”, ma che nella sua modestia rappresenta un valido workaround per aggirare la cosa.

<input type="hidden" id="str1" value="Good morning!" />
<input type="hidden" id="str2" value="Good afternoon!" />
<p title="msg">Good Morning!</p>
var now = new Date();
if(now.getHours() >= 12)
{
var toSet = $('#str2').value;
}
else
{
var toSet = $('#str1').value;
}
var msg = $('#msg');
msg.text(toSet);

Evidente, purtroppo, la ripetizione della stringa “Good morning!”. Se però lato server possiamo sfruttare famework quali PHP o Asp.Net, il codice può diventare assai più “gradevole alla vista” .

Gmail: “client” di posta predefinito

Segnalo l’utilissima applicazione gAttach! che permette di rendere il servizio web-mail di Google come “gestore predefinito” di posta nel vostro sistema Microsoft Windows.

Qui di seguito vi riporto l’elenco delle caratteristiche che potete ritrovare anche nel sito ufficiale dell’applicazione:

  • send emails directly from:
    • Windows Explorer
    • Microsoft Office
    • Adobe Acrobat
    • Windows Live Photo Gallery
    • Internet Explorer
    • Mozilla Firefox
    • .. and many more;
  • automatically attach files from your PC to a new email without manually uploading each file;
  • choose to suppress the annoying standard text provided by Windows (“Your attachments are ready to send..”);
  • handle “mailto” email links in web pages.