Una tecnica che funziona è guardare lo stile calcolato dell'elemento. Questo è supportato in Opera e Firefox (e lo riconosco in Safari, ma non ho testato). IE (almeno 7), fornisce un metodo per ottenere uno stile, ma sembra essere quello che era nel foglio di stile, non lo stile calcolato. Maggiori dettagli su quirksmode: Ottieni stili
Ecco una semplice funzione per afferrare il carattere utilizzato in un elemento:
/**
* Get the font used for a given element
* @argument {HTMLElement} the element to check font for
* @returns {string} The name of the used font or null if font could not be detected
*/
function getFontForElement(ele) {
if (ele.currentStyle) { // sort of, but not really, works in IE
return ele.currentStyle["fontFamily"];
} else if (document.defaultView) { // works in Opera and FF
return document.defaultView.getComputedStyle(ele,null).getPropertyValue("font-family");
} else {
return null;
}
}
Se la regola CSS per questo era:
#fonttester {
font-family: sans-serif, arial, helvetica;
}
Quindi dovrebbe restituire helvetica se è installato, in caso contrario, arial e, infine, il nome del font sans-serif predefinito del sistema. Si noti che l'ordinamento dei caratteri nella dichiarazione CSS è significativo.
Un trucco interessante che potresti anche provare è quello di creare molti elementi nascosti con molti caratteri diversi per provare a rilevare quali caratteri sono installati su una macchina. Sono sicuro che qualcuno potrebbe creare una bella pagina di raccolta di statistiche sui font con questa tecnica.