【问题标题】:How to change the colour SVG during Page Render ?如何在页面渲染期间更改颜色 SVG?
【发布时间】:2025-11-29 03:55:03
【问题描述】:

首先我知道如何动态改变 SVG 的颜色。我已经使用了这个问题的解决方案:

jQuery SVG image replacement

但我的情况不同。

在我的页面上,我有几个图标 (SVG),并且有一个颜色选择器。用户可以使用颜色选择器更改图标。 一切正常。

现在我想用用户选择的图标颜色生成整个页面的 PDF。

我正在使用第三方 PDF 生成库,它获取我的页面 URL 并生成它的 PDF。但问题是颜色没有应用于图标并生成 PDF。我知道这个问题的原因,因为在准备好文档时,我将所有 SVG img 标签转换为实际的 SVG 标签,然后将颜色应用于用户选择的它们。这一切都发生在页面呈现之后。

但 PDF 生成库不会等待此过程完成并在所有 SVG 图像转换为 SVG 并对其应用颜色之前生成 PDF。

我不知道要先等待整个过程完成,然后再生成其 PDF。

我尝试过缓存页面,但这也无济于事。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 我们真的需要minimal reproducible example,这样我们才能看到你在做什么。
  • 由于隐私问题,我无法显示该页面。但让我解释清楚。我有一个交互式页面,该页面上有 10 个图标呈现为 。页面上还有一个颜色选择器,用户可以使用它来更改图标的颜色。选择器颜色保存在数据库中。所以下次页面加载时,图标应该用所选颜色着色....继续...
  • 我使用解决方案(有问题的链接)首先转换所有以 .svg 为源的 并将它们转换为 标签,然后我将颜色应用于每个标签使用jQuery。但是当页面呈现时,这个过程是可能的。完成后,用户将生成该页面的 PDF。但是由于颜色过程发生在页面呈现之后,PDF 生成库在此过程发生之前生成 PDF,因此生成的 PDF 中的图标不着色
  • 我们不想要页面我们想要运行的缩减测试用例。

标签: javascript jquery css html svg


【解决方案1】:

我做到了。

解决方案是将代码包装在 IIFE 中,以便它在页面加载时立即执行,而不是在 DOM 的就绪事件时执行。

【讨论】:

    最近更新 更多