Ciao,
mi trovo in un contesto in cui non posso utilizzare framework JavaScript e quindi non posso avvalermi di tutti i vantaggi che offre un wrapper degli elementi HTML.
Sto cercando quindi una soluzione per poter assegnare dei dati agli oggetti DOM senza sporcare il sorgente generato con attributi inconsistenti.
Facendo un po' di test, ho riscontrato che gli oggetti DOM sono già di per sé dei wrapper degli elementi HTML che rappresentano, infatti non tutti gli attributi assegnati agli oggetti DOM si traducono in attributi che il browser applica sugli elementi HTML.
Un semplice esempio:
codice:
some anchor text
<script>
document.getElementById('myLink').href = 'http://www.example.org/';
</script>
Dato il link, l'assegnazione sopra riportata funziona in quanto l'attributo href è ammesso per gli elementi "A".
Nel sorgente generato infatti trovo:
some anchor text
Se invece assegno all'oggetto DOM un attributo che non è previsto per i tag "A", non ne troverò traccia nel sorgente generato:
codice:
some anchor text
<script>
document.getElementById('myLink').data = 'http://example.org/';
</script>
Il sorgente generato resta invariato:
some anchor text,
...tuttavia l'oggetto DOM lo memorizza perfettamente, tanto che resta sempre accessibile sia in lettura che in scrittura.
L'attributo tra l'altro può memorizzare anche oggetti più o meno complessi:
Codice PHP:
<html>
<head>
<title>DOM test as a wrapper</title>
</head>
<body>
[url="#"]some anchor text[/url]
<script type="text/javascript">
// salvo una metainformazione dell'oggetto
document.getElementById('myLink').data = 'http://example.org/';
alert(document.getElementById('myLink').data); // ok, è stata salvata
// modifico la metainformazione con un oggetto letterale:
document.getElementById('myLink').data = {
uno: 'sono cambiato',
due: 'salve ragazzi'
};
// la richiamo in lettura:
alert(document.getElementById('myLink').data.uno);
</script>
</body>
</html>
Vi chiedo quindi feedback su questa soluzione: ha qualche drawback?
E' per caso già stata utilizzata da qualche library nota o testata da qualcuno di voi?
Grazie
P.S. Se avessi potuto usare jQuery, non avrei esitato ad avvalermi del comodo metodo data().