如何找出页面中包含的字体
How to find out which fonts are included on a page?
我需要通过@font-face
声明(无论是在外部样式表还是内联<style>
元素中)获得页面上可用的所有字体名称的列表。这是一个脚本,将包括在我不控制的页面上。
理想情况下,我希望在不通过AJAX重新下载所有CSS文件并对其进行解析的情况下完成。
但我不能使用API上的新文档,因为我需要它是合理的跨浏览器(如果可能的话,甚至IE7)。
有没有什么方法可以在不下载和解析CSS的情况下做到这一点?
我认为这将是一个开始:
var sheets = document.styleSheets,
sheet,
rule,
i, j;
for (i = 0; i < sheets.length; i++) {
sheet = sheets[i];
for (j = 0; j < sheet.rules.length; j++) {
rule = sheet.rules[j];
if (typeof(rule.cssText) !== 'undefined' && rule.cssText.indexOf("font-face") !== -1) {
console.log(rule.cssText); // you can parse the font name from rule.cssText here
}
}
检查下面的代码,它可能有助于
var ruleFontName = [];
$.each(document.styleSheets, function(sheetIndex, sheet) {
$.each(sheet.cssRules || sheet.rules, function(ruleIndex, rule) {
if (typeof(rule.cssText) !== 'undefined' && rule.cssText.indexOf("font-face") !== -1) {
var fntSrc = (rule.cssText. match(/src: *url'(([^;]+)');/i) || ["", ""])[1];
var fntName = (rule.cssText.match(/font-family: *([^;]+);/i) || ["", ""])[1];
add(ruleFontName,fntSrc,fntName )
}
});
});
//checking if array values are not repeated
function add(arr, src, name) {
var foundName = arr.some(function (el) {
return el.fntName === name;
});
var foundSrc = arr.some(function (el) {
return el.fntSrc === src;
});
if (!foundName && !foundSrc) {
arr.push({ fntName: name, fntSrc: src });
console.log(arr);
}
}
JSFIDDLE:http://jsfiddle.net/hiteshbhilai2010/dpfpLyq1/47/
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 我如何修复包含在captcha的addthis中的错误
- 正在注入包含JS的HTML
- Json数据包含日期和时间格式
- 用Javascript更改我网站上的字体大小
- Angular js-返回一个包含类似
- jQuery/JS包含运算符或类似运算符
- 如果href包含X,请更改href
- JavaScript数组包含一个值
- 不同字体的字母间距不同
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 设置内容样式包含字体系列、字体大小和颜色的可编辑列表 (
- )
- 包含自定义字体文本的元素的jQuery height()似乎不一致
- 如何找出页面中包含的字体
- 如何正确地在HTML中包含字体
- 如何更改包含文本化值的文本变量的字体族
- 如何在三个.js中包含 typeface.json 字体文件