白名单Chrome字体通过扩展程序

时间:2015-10-02 17:39:22

标签: google-chrome-extension

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

我不想在时尚中使用* { font-family: sans; }风格,因为我想保持sans(或serif)和monospace部分,以及网页设计师,因为它们是疯狂的,通常会将它们保留在最后font-family列表。

我已经完成了我的研究,但仍然无法通过Chrome扩展程序API了解如何做到这一点。

我考虑过拦截CSS文件的请求并在响应中修改它们,但这不可能通过当前的API。

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

如果我能以某种方式读取当前标签使用的CSS文件,我可以使用font-family样式收集规则,并通过内容脚本将适当的<style>元素注入页面。但我找不到通过当前API读取这些CSS文件的方法。 (我还必须阅读HTML中嵌入的<style>规则,但这样做是可行的。

我也可以通过代理进行,但我不确定如何(安全地)应对SSL。

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

是否可以通过最新的Chrome扩展程序API实现我的目标?怎么样?如果没有,那么解决方法是什么?

我不关心从JavaScript设置的内联样式和样式。我可以忍受那些。我绝大多数页面都关注外部样式表的使用方式。

修改

wOxxOm修改document.styleSheets的建议就是这样做的方法,我已经做了一个简单的扩展,在所有网站上工作!很遗憾,在当前的Chrome浏览器中,CSSStyleSheet#cssRules会在页面来源https://code.google.com/p/chromium/issues/detail?id=45786之外加载的样式表中返回null。 T_T

(我当然会在GitHub上发布扩展程序,并在我对其进行修改后发布链接)。

编辑2

正如wOxxOm所建议的那样,阻止网络字体也是一种选择(尽管我不太理想),甚至还存在良好的开源扩展https://chrome.google.com/webstore/detail/disable-web-fonts/olmabeadgbpmhllgdkemfdnmkngkbkeg。虽然它需要一些白名单的标志性字体。然后可以通过fontconfig管理本地字体。

这个问题可能与难看的网页字体https://code.google.com/p/chromium/issues/detail?id=173207有关。

编辑3

我最终得到了这个好的(和开源)扩展https://chrome.google.com/webstore/detail/font-blocker/knpgaobajhnhgkhhoopjepghknapnikl。它是一个黑名单,但这足以满足我的需求,它适用于标志性字体。据我所知,要实现字体白名单扩展,我必须能够枚举网页加载的所有字体,这在当前的Chrome中似乎是不可能的(请参阅第一次编辑)。

0 个答案:

没有答案