Supponete di dover calcolare la dimensione (in pixel) della scrollbar via codice JavaScript all'interno di una pagina (X)HTML.
Un modo semplice è quello di:
- creare un DIV e fare in modo che non abbia la scrollbar (scrollbar: hidden) leggendo il valore della proprietà clientWidth che restituisce la dimensione effettivamente utilizzabile
- aggiungere al DIV la scrollbar (scrollbar: scroll), rileggere il valore di clientWidth sottraendolo al precedente valore letto.
La dimensione della scrollbar può variare in funzione di diversi fattori: impostazioni del sistema operativo (in Windows è possibile definire la dimensione), XP-theme abilitato o meno, ...
Il seguente codice fa quanto ho descritto in precedenza in modo che all'utente la cosa sia nascosta. Il codice sfrutta il framework JavaScript Moo (http://mootools.net/), veramente interessante e scritto tra l'altro da un italiano.
function getScrollSize()
{
if (window._scrollsize)
return window._scrollsize;
var target = new Element("div");
target.setStyles({
width: "50px"
,height: "50px"
,position: "absolute"
,top: "-1000px"
,left: "-1000px"
,overflow: "hidden"
})
.injectInside(document.body);
window._scrollsize = target.clientWidth.toInt();
target.setStyle("overflow", "scroll");
window._scrollsize -= target.clientWidth.toInt();
target.remove();
return window._scrollsize;
}