我怎样才能获得字体的样式?

时间:2015-03-19 00:03:27

标签: javascript google-chrome-extension

所以我想确定元素的字体是sans-serifserif还是monospace使用JavaScript。这适用于Google Chrome扩展程序,因此只需在Google Chrome中使用。

该扩展名将用于使用浏览器的默认字体替换每个元素的字体。因此,例如,如果默认的sans-serif字体是Arial,并且元素的字体被检测为sans-serif,则元素的字体将更改为Arial。

此外,由于可以为多种语言指定默认字体,是否还有办法确定元素的语言?

编辑:

那么如果我通过检查sans-serifserifmonospace是否被指定为后备字体来解决此问题呢?

似乎我必须迭代文档中的每个元素以确定应用于它的字体。最有效的方法是什么?或者我可以在不迭代每个元素的情况下这样做吗?

所以这就是我提出的:

/* main.js */

var elements=document.getElementsByTagName('*');

for(var i=0;i<elements.length;++i){
    var fontFamily=getComputedStyle(elements[i]).getPropertyValue('font-family');

    if(~fontFamily.indexOf('monospace')){
        fontFamily='monospace';
    }
    else if(~fontFamily.indexOf('sans-serif')){
        fontFamily='sans-serif';
    }
    else if(~fontFamily.indexOf('serif')){
        fontFamily='serif';
    }
    else{
        fontFamily='';
    }

    elements[i].style.fontFamily=fontFamily;
}

在manifest.json中:

"content_scripts":[
    {
        "matches":[
            "<all_urls>"
        ],
        "js":[
            "main.js"
        ],
        "run_at":"document_end"
    }
]

所以,如果我是正确的,这会将所有元素的字体设置为通用字体,然后由浏览器自动替换?

1 个答案:

答案 0 :(得分:1)

要获取元素的字体类型,您可以尝试以下方法:http://jsfiddle.net/vCmtk/1/

要获得该语言,有几种解决方法。您可以依靠navigator.language函数获取当前语言/区域。如果您为扩展程序实现i18n,则此函数将检索当前语言:chrome.i18n.getUILanguage()