Newsgroup: it.comp.lang.javascript
Titolo: Accedere al font-size di un elemento tramite dom

Un saluto al ng,
    ho fatto una pagina html+css, che diventerŕ il modello del mio sito,
e pensavo di aggiungere qualcosa di utile in dhtml.
Ho dimensionato via css tutto in em (a parte il font-size del body che č in pt),
e devo dire che ha degli enormi vantaggi. Cosě ho previsto due funzioni javascript:
- lo zoom dell' intero sito
- il controllo del font-size dei soli contenuti
Il fatto č che, pur definendo via css il font-size cosě:
div#content{font-size: 1em}
javascript sembra non riconoscerlo in lettura se scrivo una cosa del tipo:
var size=document.getElementById("content").style.fontSize;
la variabile size č vuota...cosě ho ovviato con due variabili globali
inizializzate fuori dalle funzioni, con valore pari alle dimensioni impostate
nel css. Questo č il codice:
<script type="text/javascript">
var contentsize=parseFloat("1.0");
var bodyfontsize=12;
function ChangeFontSize(increment)
{
contentsize+=increment;
if(contentsize<0.8 || contentsize>1.6)
    contentsize-=increment;
else
    document.getElementById("content").style.fontSize=contentsize+"em";
}
function Zoom(increment)
{
bodyfontsize+=increment;
if(bodyfontsize<8 || bodyfontsize>17)
    bodyfontsize-=increment;
else
    document.getElementsByTagName("body")[0].style.fontSize=bodyfontsize+"pt";
}
</script>
E nell' html:
<a href="#" onclick="javascript:ChangeFontSize(+0.1);return(false)">
    increase content font
</a>
<a href="#" onclick="javascript:ChangeFontSize(-0.1);return(false)">
    decrease content font
</a>
Cosě funziona tutto, con IE5.5, Opera7 e Mozilla1.4, e devo dire che lo zoom č perfetto:
il sito č stato pensato per starci in larghezza con risoluzione 800x600, ma credo che
renderebbe bene anche a 1600x1200.
Mentre ho dei problemi con la modifica del font-size dei contenuti con Opera, ma credo
che sia un problema di browser o comunque di html/css.
Manca ancora il trattamento dei cookie, che inizierň studiare presto, e il codice
sicuramentesi puň migliorare (con javascript sono all' inizio..),ma c'e' ancora una cosa:
ho anche previsto piů stili per il sito, e pensavo di usare il javascript style switcher
di 
alistapart.com
. A questo punto perň sopraggiunge una questione: i css alternativi
useranno tutti il dimensionamento relativo in em, ma vorrei non essere costretto a
dimensionare il body dei css alternativi a 12pt fissi, anzi, ancor meglio, slegarmi dal
dimensionamento in punti del body e fare una funzione di incremento del font-size del
body generica.
La mia domanda č: come posso scrivere correttamente
var size=document.getElementById("content").style.fontSize;
Cosě che javascript sia efficace?
Grazie in anticipo. Saluti,
    SantaKlauss
P.S: ho messo on-line la pagina, ecco l' url:
http://members.xoom.virgilio.it/santaklauss/index.html

Per IE (non ricordo da quale versione) potrebbe andare
document.getElementById("content").currentStyle.fontSize
Credo esista qualcosa di simile anche per mozilla e similari

Cristiano Larghi ha scritto:
| Per IE (non ricordo da quale versione) potrebbe andare
| document.getElementById("content").currentStyle.fontSize
|
| Credo esista qualcosa di simile anche per mozilla e similari
Ciao Cristiano,
    allora mi confermi che non è possibile accedere direttamente
in lettura al valore di una proprietà css via dhtml, a meno che
questa non sia prima settata in javascript? E' una cosa quasi illogica...
Ho cercato un po' in rete, e purtroppo non credo ci sia una
soluzione dom-compatibile con IE.
All' inizio e già mi trovo a dover affrontare l' object detection...
Ho trovato queste due collezioni, che dovrebbero funzionare
anche con i browsers Gecko-based:
document.defaultView
document.styleSheets
Chissà cosa bisogna fare per Opera...
Saluti,
    SantaKlauss

Ecco il mio questo:
|A questo punto però sopraggiunge una questione: i css alternativi
| useranno tutti il dimensionamento relativo in em, ma vorrei non essere costretto a
| dimensionare il body dei css alternativi a 12pt fissi, anzi, ancor meglio, slegarmi dal
| dimensionamento in punti del body e fare una funzione di incremento del font-size del
| body generica.
Pensandoci, ho trovato la soluzione... in realtà la risposta era nella domanda...
invece di reperire e modificare il font-size del body, basta cambiare il
font-size (in em) del div che contiene tutto (con id="main") che inizialmente,
per logica, avrà font-size pari a 1em.
Magari quindi generalizzare la funzione di modifica del font-size passandogli
anche l' id, così da avere un unica funzione che fa tutte e due le cose.
Saluti,
    SantaKlauss