
guide
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Segnalare agli utenti la destinazione dei collegamenti in modo semplice ed efficace
Il DOM (Document Object Model) è, tra gli standard del W3C, uno dei meno esplorati, una sorta di oggetto misterioso di cui non sono ancora state sfruttate tutte le potenzialità. Il numero di risorse valide, articoli o siti ad esso dedicati, è di gran lunga inferiore rispetto a quello destinato ai CSS o alla famiglia XML, per citare solo due casi. Per chi volesse farsi un’idea più completa, il rimando è alle pagine del W3C o alla guida Dom di HTML.it. Qui ci limiteremo a ricordare che il DOM rappresenta un insieme di API (Application Programming Interfaces) che consentono la manipolazione degli elementi di un documento (X)HTML tramite i più svariati linguaggi di scripting e programmazione. Nelle parole del W3C, il DOM “consente a programmi e script di accedere e modificare dinamicamente il contenuto, la struttura e lo stile di un documento“.
In questo articolo mostreremo una semplice applicazione delle tecniche legate al DOM. L’obiettivo è verificare sul campo la sua capacità di modifica del documento. L’oggetto dell’esperimento saranno i link, di cui proveremo a migliorare alcuni aspetti relativi all’usabilità.
Quali? In un articolo apparso su Usabile.it, Maurizio Boscarol ha esposto una serie di linee guida per migliorare la qualità dei collegamenti ipertestuali. La frase che sintetizza il tutto è la seguente: “Riassumiamo brevemente i requisiti principali dei link: sono soprattutto legati alla loro riconoscibilità e alla loro capacità di far anticipare all’utente in maniera corretta dove porteranno“. Se il link si apre in una nuova finestra, se porta ad un sito in lingua inglese, se è esterno, se punta a documenti come archivi zippati o PDF, è il caso di segnalarlo al nostro visitatore.
Un metodo suggerito è quello di usare l’attributo title e sfruttarne la capacità di essere visualizzato in un tooltip al passaggio del mouse. Un altro sistema consiste nel fornire contesto al collegamento utilizzando testi o immagini che lo accompagnino. Purtroppo, abitudini inveterate o la semplice pigrizia sono ostacoli verso questa meta auspicabile. Negli esempi che vi presentiamo sfrutteremo DOM e Javascript per implementare questa soluzione (gli esempi sono puramente indicativi del metodo e non intendono fornire alcuna soluzione a complessi problemi di usabilità).
L’ispirazione per l’articolo e per lo script utilizzato viene da un esperimento attuato da Simon Willison per la gestione delle citazioni con l’elemento blockquote.
Con il primo esperimento distinguiamo con un piccola icona i link interni e quelli esterni. In pratica: usiamo due immagini diverse a seconda che il collegamento porti ad una pagina del nostro sito o meno. Nel documento abbiamo impostato tre link: due a pagine di HTML.it e uno al W3C. Analizziamo i punti salienti dello script.
function modificaLink() {
var sito = /html.it/;
Definiamo innanzitutto la funzione modificaLink. Subito dopo utilizziamo una regular expression che ci servirà a verificare la presenza del dominio html.it all’interno dell’URL (se volete utilizzare lo script dovrete sostituire ad html.it il domino del vostro sito, senza www).
var links = document.getElementsByTagName(‘a’);
for (i = 0; i < links.length; i++) {
var link = links[i];
In questo blocco iniziamo a usare i metodi del DOM. Per prima cosa andiamo a rintracciare tutti i link (elemento a) presenti nella pagina grazie a document.getElementsByTagName. Eseguiamo quindi un loop su tali elementi e inizializziamo un array (link) contenente la collezione di tutti i collegamenti ipertestuali.
url = links[i].getAttribute(‘href’);
if (url.match(sito)) {
Per verificare se il link è esterno o interno dobbiamo confrontare l’URL presente nell’attributo href con la variabile definita nella regular expression. Prima (url = links[i].getAttribute(‘href’); ) andiamo a rintracciare i valori di tutti gli href, poi verifchiamo che nell’URL sia presente html.it.
icona = document.createElement(‘img’);
icona.setAttribute(‘src’, ‘interno.gif’);
icona.setAttribute(‘alt’, ‘Link interno’);
link.appendChild(icona);
}
Qui il DOM dà il suo meglio. Se nell’URL è presente html.it, creiamo prima un nuovo elemento img; impostiamo quindi gli attributi src e alt; infine, (con il metodo appendChild) inseriamo l’immagine ‘interno.gif‘ come elemento figlio di a.
Nella seconda parte dello script, ci limitiamo a impostare l’immagine per i siti esterni, ovvero quelli che non contengono html.it in href. I metodi usati sono identici, cambia solo l’immagine:
else {
icona = document.createElement(‘img’);
icona.setAttribute(‘src’, ‘esterno.gif’);
icona.setAttribute(‘alt’, ‘Link esterno’);
link.appendChild(icona);
}
}
}
Per finire, facciamo sì che la funzione venga eseguito al caricamento della pagina:
window.onload = modificaLink;
Dal momento che l’icona apparirà esattamente al fianco del link, siamo intervenuti con una piccola regola CSS per impostare un margine sinistro di 5px. Allo stesso tempo abbiamo eliminato il fastidioso bordo tipico delle immagini usate come link:
a img { margin-left: 5px; border: none;}
Riassumendo, abbiamo utilizzato nello script i seguenti metodi del DOM:
Metodo | Descrizione |
---|---|
getElementsByTagName(tag) | Rintraccia e restituisce elementi di un documento in base al tag. |
getAttribute(nomeAttributo) | Rintraccia e restituisce il valore degli attributi di un elemento in base al nome dell’attributo. |
createElement(nomeElemento) | Crea un nuovo elemento. |
setAttribute(nomeAttributo, valore) | Inserisce un nuovo attributo per un dterminato elemento e ne imposta il valore |
appendChild(nuovoNodoFiglio) | Inserisce un oggetto come figlio del nodo dichiarato nell’espressione. |
Una volta chiarito il funzionamento dello script possiamo sbizzarrirci.
Nel secondo esempio abbiamo optato per una soluzione alternativa. Invece di inserire un’immagine come nuovo elemento nel corpo del documento, si può fare affidamento sui CSS per modificare l’aspetto dei link a seconda che siano esterni o interni.
Per prima cosa abbiamo impostato due classi da applicare ai collegamenti: in una l’immagine di sfondo è ‘interno.gif’, nell’altra ‘esterno.gif’. Lo script valuta la presenza di html.it nell’url e assegna di conseguenza ai link la classe .esterno o quella .interno. In questo caso si perdono le informazioni presenti in precedenza nell’attributo alt. Motivo in più per usare il title sul link.
L’esempio 3 è praticamente identico al primo, salvo il fatto che al posto di un’icona utilizziamo un semplice avviso testuale. Nello script va notato il metodo document.createTextNode, deputato per l’appunto alla creazione di nuovi nodi testuali all’interno del documento.
Nel quarto esempio applichiamo lo script ad un’altra eventualità. Se il link punta ad un file non html è bene avvertire l’utente. Useremo quindi un’icona per segnalare il tipo di file che si sta per scaricare o visualizzare. L’impostazione dello script è pressocché identica alle precedenti. Ovviamente non abbiamo qui bisogno di regular expression. Con l’istruzione (url.substring(url.length-3, url.length)==’zip’) verifichiamo semplicemente se le ultime 3 lettere dell’URL corrispondano ad una determinata estensione di file e se ciò è vero visualizziamo l’immagine adatta. Lo script così concepito è applicabile, ovviamente, a URL regolari che terminino con l’estensione del file.
In tutti gli esperimenti visti finora, lo script viene applicato a tutti i link presenti in una pagina. Ciò può essere talvolta non desiderato. Magari vogliamo che la funzionalità sia presente nella sezione principale ma non in un menu. La soluzione è a portata di mano. Nel quinto esempio abbiamo ripreso il primo, apportando una piccola modifica. Le liste di link sono due, la prima all’interno del div “menu”, la seconda all’interno del div “sezione”. Vogliamo applicare lo script solo a questi ultimi. Basterà filtrare all’origine l’applicazione dei metodi DOM:
var sezione = document.getElementById(‘sezione’);
var links = sezione.getElementsByTagName(‘a’);
Con la variabile sezione ci riferiamo al div che porta lo stesso nome. Esso viene definito con uno dei cardini della programmazone sul DOM, document.getElementById, metodo che consente di rintracciare e restituire un elemento in base al suo id. Subito dopo rintracciamo solo i link presenti al suo interno e non in tutto il documento, come si faceva prima con document.getElementsByTagName(‘a’).
Come si può intuire da questi semplicissimi esperimenti, il DOM è uno strumento potente ed efficace. In quanto tale va usato con cautela, tenendo sempre conto di fattori come l’accessibilità. Inserire contenuto con uno script è per certi versi un azzardo. L’utente di browser alternativi o senza supporto di Javascript, non potrà fruirne. Nel nostro caso, però, l’uso delle icone o del testo accessorio è un plus che offriamo a chi ci visita con i browser tradizionali. L’uso eventuale di queste funzionalità non ci deve portare a fare a meno di utilità come l’attributo title. Anzi, usare quest’ultimo in maniera appropriata, può consentirci di operare meglio anche con lo script. Basterà accedere all’attributo e lavorare su di esso come si è fatto con href.
Se vuoi aggiornamenti su Miglioriamo i link con DOM e Javascript inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I numeri e i contenuti di DroidCon 2016, commentati dal padrone di casa Francesco Ronchi. Il capitano di Synesthesia fa […]
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Come creare applicazioni per il Web con PHP e MySQL per il DBMS.
Tutte le principali tecnologie per diventare uno sviluppatore mobile per iOS.
I fondamentali per lo sviluppo di applicazioni multi piattaforma con Java.
Diventare degli esperti in tema di sicurezza delle applicazioni Java.
Usare Raspberry Pi e Arduino per avvicinarsi al mondo dei Maker e dell’IoT.
Le principali guide di HTML.it per diventare un esperto dei database NoSQL.
Ecco come i professionisti creano applicazioni per il Cloud con PHP.
Lo sviluppo professionale di applicazioni in PHP alla portata di tutti.
Come sviluppare applicazioni Web dinamiche con PHP e JavaScript.
Fare gli e-commerce developer con Magento, Prestashop e WooCommerce.
Realizzare applicazioni per il Web utilizzando i framework PHP.
Creare applicazioni PHP e gestire l’ambiente di sviluppo come un pro.
Percorso base per avvicinarsi al web design con un occhio al mobile.
Realizzare siti Web e Web application con WordPress a livello professionale.
Impariamo ad utilizzare Takamaka, una blockchain Java Full Stack, per scrivere codice Java installabile ed eseguibile su una blockchain
StandardJS è uno strumento in ambiente Node.js, per la definizione ed il controllo di uno standard di codifica in JavaScript.
Come muovere i primi passi con la libreria di ricerca e creare i primi indici
Guida a Red Hat Quarkus, uno stack Java Kubernetes nativo pensato per applicazioni serverless e per la realizzazione di microservizi rapidi ed ottimizzati. Una piattaforma concepita per accedere in ambiente Cloud mettendo a disposizione un framework orientato ai microservizi, come ad esempio Spring Boot o Micronaut