浏览器是否提供任何预渲染 Hook ,您可以在渲染之前对 DOM 元素的样式应用更改?
例如,我可能想将所有红色的颜色更改为绿色
此要求适用于浏览器扩展,因此该解决方案应该适用于不同的网页。在不知道源代码的情况下覆盖元素的样式并非易事,因为元素的样式是在其上运行的 CSS 和 Javascript 的结果,并且不同网站的机制不同。想到的方法是:
- 解析网页的 CSS 和 Javascript 以确定元素的样式。这似乎是多余的,因为浏览器也在这样做
- 扫描 DOM 并检查每个元素的计算样式和覆盖内容。这可行,但如果元素动态变化,我们必须重复扫描可能很重的变化
那么这样的浏览器钩子(Hook)是否存在呢?如果不是,您会推荐什么替代方法?
最佳答案
对于您想要实现的目标,查看名为 Dark Reader 的 Chrome 扩展程序的代码会对您很有帮助。 .这个扩展可以让你的整个页面变暗,但通过分析代码的 css 来智能地做到这一点。如果某些东西已经是黑暗的,它会保持原样。只有在需要对比度时,才会将明亮的背景设为黑色,将文本设为白色。 图片会让事情变得清晰
dark reader使用js解析css和styles,在页面中注入(inject)自己的CSS样式,达到需要的效果。
如果您真的想利用浏览器的渲染管道,请查看 Project Houdini这将允许将来对浏览器进行此类自定义。现在还没准备好。
关于javascript - 浏览器渲染 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54277787/