Google chrome extension 通过扩展白名单Chrome字体

Google chrome extension 通过扩展白名单Chrome字体,google-chrome-extension,Google Chrome Extension,我正在寻找一种在Chrome页面中可以使用的白名单字体的方法。在Firefox中,我只是简单地禁用允许页面选择自己的字体,而不是我在上面的内容设置中选择的字体,但Chrome似乎热衷于让网页设计师强迫我们使用难看且通常无法阅读的字体 我不想在时尚中使用*{font-family:sans;}样式,因为我想保留sans(或衬线)和monospace部分,而网页设计师,尽管他们很疯狂,通常会将它们保留在字体系列列表的末尾 我已经做了研究,但仍然不知道如何通过Chrome扩展API来实现 我考虑过截取

我正在寻找一种在Chrome页面中可以使用的白名单字体的方法。在Firefox中,我只是简单地禁用允许页面选择自己的字体,而不是我在上面的内容设置中选择的字体,但Chrome似乎热衷于让网页设计师强迫我们使用难看且通常无法阅读的字体

我不想在时尚中使用
*{font-family:sans;}
样式,因为我想保留sans(或衬线)和monospace部分,而网页设计师,尽管他们很疯狂,通常会将它们保留在
字体系列
列表的末尾

我已经做了研究,但仍然不知道如何通过Chrome扩展API来实现

我考虑过截取CSS文件的请求并修改它们作为响应,但这不可能通过当前的API实现

我还可以遍历DOM树,检查每个节点上的CSS,并适当地替换它,但代价很高。此外,这对从JavaScript构建内容的页面不起作用。所以我不得不使用
MutationObserver
s,这太贵了

如果我能够以某种方式读取当前选项卡正在使用的CSS文件,我可以使用
字体系列
样式收集规则,并通过内容脚本将适当的
元素注入页面。但我找不到通过当前API读取这些CSS文件的方法。(我还必须阅读HTML中嵌入的
规则,但这是可行的)

我也可以通过一些代理来实现,但我不确定如何(安全地)处理SSL

我可以接近fontconfig。它摆脱了Arial,但不适用于外部(通常是最难看的)CSS字体

是否可以通过当前的Chrome扩展API实现我的目标?怎么用?如果没有,解决办法是什么?

我不关心内联样式和JavaScript设置的样式。我可以接受这些。我关心的绝大多数页面都使用来自外部样式表的样式

编辑

wOxxOm建议修改
document.styleSheets
就是这样做的,我做了一个简单的扩展,可以在所有网站上使用!不幸的是,在当前的Chrome浏览器中,
CSSStyleSheet#cssRules
对于在页面原点之外加载的样式表返回
null
。图特

(当然,我会在GitHub上发布扩展,并在润色后在这里发布链接)

编辑2

正如wOxxOm所建议的那样,阻止web字体也是一种选择(尽管我认为不太理想),甚至还有很好的开源扩展。但它需要一些标志性字体的白名单。然后可以通过fontconfig管理本地字体

这个问题可能与难看的网页字体有关

编辑3


我最终得到了这个不错的(开源)扩展。这是一个黑名单,但这足以满足我的需要,它与标志性字体。据我所知,要实现字体白名单扩展,我必须能够列举网页加载的所有字体,而这在当前的Chrome中似乎是不可能的(请参见第一次编辑)。

是的,作为一名设计师,我还认为大多数带有网页字体的页面都很难看。解决方案可能是a)使用阻止已知的webfont URL,b)更改
文档中的规则。样式表
@wOxxOm不知道b)选项。美好的我会调查的。非常感谢。我不是有意侮辱优秀的网页设计师~^。太好了。建议:一,。这个问题不应该包含解决方案。将您的编辑移动到答案中,然后单击该按钮接受它。2.将扩展图标设置为透明,否则它看起来像是带有黑色浏览器主题3的eww。添加一些阻止页面/域4上使用的所有字体的方法。添加一种模式来阻止所有webfonts的使用。有没有其他方法可以修改
document.styleSheets
而不存在外部文件加载问题?事实上,我更希望有一个白名单而不是黑名单,但看起来这仍然是不可能实现的。