所以我想确定元素的字体是sans-serif
,serif
还是monospace
使用JavaScript。这适用于Google Chrome扩展程序,因此只需在Google Chrome中使用。
该扩展名将用于使用浏览器的默认字体替换每个元素的字体。因此,例如,如果默认的sans-serif字体是Arial,并且元素的字体被检测为sans-serif,则元素的字体将更改为Arial。
此外,由于可以为多种语言指定默认字体,是否还有办法确定元素的语言?
编辑:
那么如果我通过检查sans-serif
,serif
或monospace
是否被指定为后备字体来解决此问题呢?
似乎我必须迭代文档中的每个元素以确定应用于它的字体。最有效的方法是什么?或者我可以在不迭代每个元素的情况下这样做吗?
所以这就是我提出的:
/* 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"
}
]
所以,如果我是正确的,这会将所有元素的字体设置为通用字体,然后由浏览器自动替换?
答案 0 :(得分:1)
要获取元素的字体类型,您可以尝试以下方法:http://jsfiddle.net/vCmtk/1/
要获得该语言,有几种解决方法。您可以依靠navigator.language
函数获取当前语言/区域。如果您为扩展程序实现i18n,则此函数将检索当前语言:chrome.i18n.getUILanguage()