首页 > 解决方案 > 如何执行 svg.setAttribute("width", svg.getBBox().width); 在服务器端?

问题描述

我正在尝试在 NodeJS 的帮助下提供 SVG 响应。这个 SVG 有一个小的内联 JavaScript 代码,可以动态计算 SVG 的宽度。当使用浏览器直接调用 API 时,一切正常。但是,当我在 GitHub 的自述文件中使用这些 API(在自述文件中用于服务器 SVG)时,它不允许我运行存储在 SVG 中的内联 JavaScript 代码。

所以当我问这个为什么 content-security-policy 的自定义标头在 github问题上不起作用时,我知道 github 不允许任何内联 JS,我们不能覆盖 Github 的 Content-Security-Policy 来执行存储的 JS在 SVG 中。

所以现在我想在服务器端执行内联 JavaScript 来计算 SVG 宽度并将其嵌入到 SVG 中。但问题是如何svg.setAttribute("width", svg.getBBox().width);在服务器端执行此操作。因为这些 SVGTemplate Literals在服务器端。

问题:

有没有办法计算 SVG 的宽度而不在服务器端渲染它?
OR
我是否必须在服务器端创建一个虚拟 DOM 才能在该 DOM 中加载 SVG,然后计算宽度?
OR
有没有办法在没有 JavaScript 的情况下做到这一点?

谁能帮我解决如何在服务器端获取 SVG 的动态宽度?

标签: githubsvgcontent-security-policy

解决方案


推荐阅读