Come abbiamo visto nell'articolo precedente è cosa buona e giusta che le richieste effettuate per la ricezione di file statici (immagini, css e js) avvengano attraverso chiamate a cui non sono impostati cookies, in modo da ridurre il traffico generato e le richieste effettuate. Questo è consigliato sia da Yahoo che da Google. Un modo molto semplice è usare un dominio differente o un sottodominio andando ad impostare i cookies in modo che questi non rispondano al dominio indicato.
Spesso, però, questo non è proprio così semplice da realizzare a causa dei sistemi di tracciamento utilizzati. Vedremo come risolvere questo problema per i più comuni.
L'altro giorno, mentre assieme a Tommaso stavamo controllando un problema di performance su alcuni script JS, per puro sbaglio mi è capitato di vedere usare jQuery con dei selettori usati in maniera che credevo essere impropria, a prima vista mi sembrava un errore, per questo motivo ho fatto alcuni test per vedere se lo era e i risultati sono stati inaspettati.
in alcune situazioni può capitare di dover aprire finestre figlie di quella padre, operazione che si può effettuare tramite javascript ricorrendo al semplice
window.open("http://www.miosito.tpl/finestra.html");e può anche essere necessario trasferire informazioni dalla finestra figlia a quella padre.
Anche in questo caso javascript ci viene in contro, infatti possiamo utilizzare la chiamata:
window.opener.nomeFunzione(parametro);per poter arrivare a trasferire l'informazione da una finestra all'altra; ovviamente nella finestra padre deve essere presente la funzione nomeFunzione e questa deve occuparsi di elaborare il parametro (o i prametri) in ingresso.
Può capitare di avere elementi della pagina che devono essere caricati in maniera asincorna, di consegunenza non sono disponibili al termine del primo caricamento della pagina, ultimamente sempre più spesso capita che questi elementi debbano a loro volta essere ancorati ad altri eventi javascript (binding).
Fintanto che il caricamento di questi secondi elementi viene svolto attraverso script scritti da noi è sufficiente mettere in coda al caricamento dell'elemento tramite $.getAjax() la funzione che si decide di ancorare agli elementi, ma cosa succede quando questo viene svolto in maniera "automatica" ricorrendo a script predefiniti (si, per capirci il caricamento tramite AHAH Form di Drupal)?
Come spesso capita si utilizzano select per andare a far effettuare delle scelte agli utenti, e come abbiamo visto precentemente è possibile usare le funzionalità ajax per fare in modo che delle select secondarie varino in funzione della prima scelta.
Cosa succede, invece, quando si hanno centinaia o migliaia di elementi tra cui scegliere? una select diventa una pessima scelta per l'utente che deve andare ad inserire i dati, ma fortunatamente Drupal ci mette a disposizione i campi autocompletanti, elementi che abbiamo già affrontato in articoli precedenti.
Vediamo ora come creare dei campi autocompletanti che hanno dipendenze tra di loro.
Nella creazione di form può essere necessario procede con passi successivi in una serie di scelte, questo comporta una perdita di tempo per gli utenti e quindi è molto comodo sfruttare le potenzialità offerte da ajax per effettuare questi passaggi in cascata senza dover andare a ricaricare la pagina.
Andiamo a vedere come effettuare questo usando gli AHAH form di Drupal, che consentono di mantenere sufficientemente sicure le informazioni che transitano ma comunque alleggerendo il carico di lavoro per il server; per capire il risultato che vogliamo ottenere andiamo a vedere questa pagina.
A chi capita di relaizzare siti, dopo la fase iniziale di produzione e prima configurazione non può tralasciare al seconda fase, ma non meno importante, di messa a punto del sistema. Per fare questo uno strumento che non può mancare è FireBug con l'accoppiata di YSlow.
Dopo l'installazione di base lanciandolo sul nostro sito vediamo che se abbiamo usato un buon sistema di pubblicazione, allora otterremo un discreto punteggio già di partenza, una installazione di prova ha rilevato che è possiblile raggiungere come base un punteggio di circa 77 punti. Vediamo ora come portare il nostro punteggio (e quindi la velocità percepita dagli utenti) a livelli ben più alti.
Drupal si occupa esclusivamente della validazione lato server delle informazioni, ma spesso è consigliabile prevedere ad una prima validazione dei dati inseriti dall'utente lato client, in modo da evitare l'invio della richiesta limitando quindi le possibilità di errore. Ovviamente la validazione lato client non deve essere l'unica attiva, essendo facilmente bypassabile disabilitando i JS sul client, e si rischierebbero danni notevoli.
Vediamo ora come sfruttare una nota libreria di validazione che utilizza jQuery come framework (lo stesso di Drupal, evitandoci, quindi, complicazioni inutili), questa libreria è la jquery.validation.
Capita a volte di dover scriver documenti LaTeX che contengano stralci di codice dei più diversi linguaggi di programmazione, spesso risolta utile anche un evidenziazione della sintassi nel documento finale prodotto. Per fare questo esistono diverse vie:
Presuppongo che se siamo qui vogliamo seguire la terza strada l'operazione è abbastanza semplice, si tratta solamente di scaricare il pacchetto listings, per esempio da ctan.org.