浏览器渲染挂钩

Browser render hook

浏览器是否提供任何预渲染挂钩,您可以在 DOM 元素呈现之前对它们应用样式更改?

例如,我可能想将 red 的颜色更改为 green

此要求适用于浏览器扩展,因此该解决方案应该适用于不同的网页。在不知道源代码的情况下覆盖元素的样式并非易事,因为元素的样式是在其上运行的 CSS 和 Javascript 的结果,并且机制不同不同的网站。想到的方法是:

那么这样的浏览器挂钩是否存在?如果不是,您会推荐什么替代方法?

没有每个元素的渲染挂钩,没有。您可以在渲染下一帧(通常每秒 60 帧)之前通过 requestAnimationFrame 请求回调,但这不是进行您正在考虑的那种检查的好地方。

要捕获对单个元素的更改,您可以设置 mutation observers 以捕获对其 style 属性的更改( 通过设置各种style 属性 代码中的属性)。您需要观察这是否会变成性能问题。

所以我怀疑您需要结合上述内容和上述内容:

  • 搜索 style sheets 以查找您要更改的规则
  • 确定具有您要更改的内联样式的元素
  • 侦听 style 属性的更改,以便您可以在必要时响应这些更改

对于您要实现的目标,查看名为 Dark Reader 的 Chrome 扩展的代码会对您很有帮助。这个扩展可以让你的整个页面变暗,但通过分析代码的 css 来智能地做到这一点。如果某些东西已经是黑暗的,它会保持原样。只有在需要对比度时,才会将明亮的背景设为黑色,将文本设为白色。 图片会让事情变得清晰

原创

黑暗reader渲染

深色reader使用js解析css和样式,在页面中注入自己的CSS样式,达到需要的效果。

如果您真的想利用浏览器的渲染管道,请查看 Project Houdini 将来允许对浏览器进行此类自定义。现在还没准备好。