Javascript 如何在HTML代码中提取字体族?

Javascript 如何在HTML代码中提取字体族?,javascript,regex,preg-match,Javascript,Regex,Preg Match,我目前正在从事一项研究。我想使用Javascript提取HTML代码中使用的字体系列。我发现这段正则表达式只能找到普通字体: font-family\s*?:.*?(;|(?=""|'|;)) i、 e字体系列:Arial、Helvetica、无衬线 我无法匹配字体系列,例如: font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', sans-serif; 有没有提取字体/字体系列的方法?如果使用jQuery,您

我目前正在从事一项研究。我想使用Javascript提取HTML代码中使用的字体系列。我发现这段正则表达式只能找到普通字体:

font-family\s*?:.*?(;|(?=""|'|;))
i、 e字体系列:Arial、Helvetica、无衬线

我无法匹配字体系列,例如:

font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', sans-serif;

有没有提取字体/字体系列的方法?

如果使用jQuery,您可以:

$('#myElement').css('fontFamily');
或webkit解决方案:

var el = document.querySelector('#myElement');
window.getComputedStyle(el).fontFamily;
var element = document.getElementById('elementId'),
    style = window.getComputedStyle(element),
    top = style.getPropertyValue('font-family');
如果您仍计划从css/样式定义之类的文本进行匹配:

"font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;".match(/font-family\s*?\:(.*)(?=;)/gi)

这是一个最简单的RegExp,但将按预期工作。

如果您使用jQuery,您可以:

$('#myElement').css('fontFamily');
或webkit解决方案:

var el = document.querySelector('#myElement');
window.getComputedStyle(el).fontFamily;
var element = document.getElementById('elementId'),
    style = window.getComputedStyle(element),
    top = style.getPropertyValue('font-family');
如果您仍计划从css/样式定义之类的文本进行匹配:

"font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;".match(/font-family\s*?\:(.*)(?=;)/gi)
这是一个最简单的RegExp,但将按预期工作。

非jQuery解决方案:

var el = document.querySelector('#myElement');
window.getComputedStyle(el).fontFamily;
var element = document.getElementById('elementId'),
    style = window.getComputedStyle(element),
    top = style.getPropertyValue('font-family');
非jQuery解决方案:

var el = document.querySelector('#myElement');
window.getComputedStyle(el).fontFamily;
var element = document.getElementById('elementId'),
    style = window.getComputedStyle(element),
    top = style.getPropertyValue('font-family');

您可以通过这个简单的脚本获得字体系列

alert(document.getElementById("*** id name of your field******").style.fontFamily);

您可以通过这个简单的脚本获得字体系列

alert(document.getElementById("*** id name of your field******").style.fontFamily);

我终于把它解决了

function demo(input,output) {
var div = document.createElement("div");
try {
    div.innerHTML = input;
} catch (e) {
    alert(e.message);
    return;
}
// images
var images = div.getElementsByTagName("IMG");
//console.log(images);

// font-family
var fontfamily = [];
var ffstack = [div];
while (ffstack.length) {
    var ff = ffstack.pop();
    if (ff.style && ff.style.fontFamily) {
            fontfamily.push(ff.style.fontFamily);
    }
    if (ff.childNodes) {
        for (var i = 0; i < ff.childNodes.length; i++) {
            ffstack.push(ff.childNodes[i]);
        }
    }
}
//console.log(fontfamily);
document.getElementById("resultBlock").style.display = "block";
var vArray = Duplicates(fontfamily);
var fontss = vArray.join("\n\n");
output.value =fontss;
功能演示(输入、输出){
var div=document.createElement(“div”);
试一试{
div.innerHTML=输入;
}捕获(e){
警报(e.message);
返回;
}
//图像
var images=div.getElementsByTagName(“IMG”);
//控制台日志(图像);
//字体系列
var fontfamily=[];
var ffstack=[div];
while(ffstack.length){
var ff=ffstack.pop();
if(ff.style&&ff.style.fontFamily){
fontfamily.push(ff.style.fontfamily);
}
if(ff.childNodes){
对于(变量i=0;i
}

功能重复(arr){
var i,
lenn=阵列长度,
out=[],
obj={};
对于(i=0;i

}

我终于把它解决了

function demo(input,output) {
var div = document.createElement("div");
try {
    div.innerHTML = input;
} catch (e) {
    alert(e.message);
    return;
}
// images
var images = div.getElementsByTagName("IMG");
//console.log(images);

// font-family
var fontfamily = [];
var ffstack = [div];
while (ffstack.length) {
    var ff = ffstack.pop();
    if (ff.style && ff.style.fontFamily) {
            fontfamily.push(ff.style.fontFamily);
    }
    if (ff.childNodes) {
        for (var i = 0; i < ff.childNodes.length; i++) {
            ffstack.push(ff.childNodes[i]);
        }
    }
}
//console.log(fontfamily);
document.getElementById("resultBlock").style.display = "block";
var vArray = Duplicates(fontfamily);
var fontss = vArray.join("\n\n");
output.value =fontss;
功能演示(输入、输出){
var div=document.createElement(“div”);
试一试{
div.innerHTML=输入;
}捕获(e){
警报(e.message);
返回;
}
//图像
var images=div.getElementsByTagName(“IMG”);
//控制台日志(图像);
//字体系列
var fontfamily=[];
var ffstack=[div];
while(ffstack.length){
var ff=ffstack.pop();
if(ff.style&&ff.style.fontFamily){
fontfamily.push(ff.style.fontfamily);
}
if(ff.childNodes){
对于(变量i=0;i
}

功能重复(arr){
var i,
lenn=阵列长度,
out=[],
obj={};
对于(i=0;i
}