javascript - 在 `data:` URI 中转义 SVG 的正确方法?

标签 javascript google-chrome svg

Chrome 最近启动了 blocking URLs with new line and < characters .

我维护的一个应用程序严重依赖数据 URI ( data:image/svg+xml;utf8,<svg>......) 中的 SVG 图像。使用 data: 的原因URI 而不是传统的图像或 SVG 标签是在运行时从更大的 JSON 文档中的 SVG 属性加载 SVG。

是否可以在 data: 中使用 SVG? Chrome 60 中发生此更改后的 URL?如果没有,我有什么选择?

更新:用户 Álvaro González 建议使用 encodeURIComponent这确实使弃用警告消失了。

最佳答案

数据 URI 仍然是 URI,所以 encodeURIComponent()应该是正确的工具:

The encodeURIComponent() function encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters).

不要忘记将其应用于图像数据,而不是整个 URI。

如果 URI 在 CSS 中使用,这就是您所需要的。如果您想在 HTML 中注入(inject)它,您还应该在此之上应用 HTML 编码(这次是完整的 URI)。

关于javascript - 在 `data:` URI 中转义 SVG 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44570636/

相关文章:

javascript - Angular 2 RC5 <base href ="..."> 中断路由

javascript - 使用 javascript 从 SVG 生成低分辨率 PNG

javascript - 如何在函数式 JavaScript 中存储数组的状态?

javascript - 使用 JavaScript 修复位置变化

CSS3 border-image Repeat 在 Chrome 56 中不起作用

javascript - a-frame 将我的 SVG 转换为像素图像

javascript - 如何用jquery隐藏按钮

javascript - 无法从responseXML 检索nodeValue,但可以获取nodeName?

javascript - JSON.parse 在谷歌浏览器中失败

javascript - HTML5 音频事件不会在 Chrome 上触发