一种有效的技术是查看元素的计算样式。这在 Opera 和 Firefox 中受支持(我在 safari 中进行了侦察,但尚未测试)。IE(至少 7 个)提供了一种获取样式的方法,但它似乎是样式表中的任何内容,而不是计算样式。有关 quirksmode 的更多详细信息:获取样式
这是一个获取元素中使用的字体的简单函数:
/**
* 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;
}
}
如果这方面的 CSS 规则是:
#fonttester {
font-family: sans-serif, arial, helvetica;
}
如果安装了 helvetica,则返回 arial,最后返回系统默认无衬线字体的名称。请注意,CSS 声明中的字体顺序很重要。
您还可以尝试的一个有趣的技巧是创建许多具有许多不同字体的隐藏元素,以尝试检测机器上安装了哪些字体。我相信有人可以用这种技术制作一个漂亮的字体统计收集页面。