生成不带foreignObject标签的svg

2023-11-30

我在用dom-to-image.js插入。问题是,它会生成一个<foreignObject>污染画布的标签。这是生成 svg 的部分。

function makeSvgDataUri(node, width, height) {
        return Promise.resolve(node)
            .then(function (node) {
                node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
                return new XMLSerializer().serializeToString(node);
            })
            .then(util.escapeXhtml)
            .then(function (xhtml) {
                return '<foreignObject x="0" y="0" width="100%" height="100%">' + xhtml + '</foreignObject>';
            })
            .then(function (xhtml) {
                return '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '">' +
                    xhtml + '</svg>';
            })
            .then(function (svg) {
                return 'data:image/svg+xml;charset=utf-8,' + svg;
            });
    }

如果我只是注释掉<foreignObject>标签部分,则图像不显示。生成此 svg 的正确方法是什么?<foreignObject>


这是 safari 自版本 9 以来引入的已知安全问题。
由于绘制foreignObject 意味着要使用XMLParser,因此该领域的恶意代码风险非常大。 Safari 可能知道他们这里缺少一些东西,并且更喜欢污染画布。
这同样适用于所有 svg 图像边缘下方的 IE。

由于这是一个安全问题,因此没有解决方法,除非使用其他不执行此类黑客操作的库。即使在支持它的浏览器上,该技术也应用了如此多的安全限制,因此它不会有任何好处。

在画布上绘制 html 的唯一可靠方法是仅使用画布方法来执行此操作。
像 html2canvas 或其他库这样的库会执行此操作,并且不会污染您的画布。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成不带foreignObject标签的svg 的相关文章

  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • 如何打开新选项卡并更改当前页面

  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • Javascript 将对象推送为克隆

    我将 d3 用于交互式网络应用程序 我需要绑定的数据在交互过程中发生变化 并且由 JSON 变量中的一些选定对象组成 为此 我在 JSON 变量上使用了映射 并进行了一些查询来选择适当的对象 对象被推送到列表中 并且该列表被绑定为新数据 我
  • 从选择 onChange 调用 javascript 函数 [重复]

    这个问题在这里已经有答案了 所以我有一个简单的 HTML 选择框和一个 javascript 警报功能 我希望选择框有一个 onchange 事件来调用 javascript 警报函数 这是我到目前为止所拥有的 HTML div Type
  • 将时间戳转换为一个数组

    在应用程序脚本 谷歌表中运行 我从 API 获取时间戳并返回此结果 1 6370611672429312E18 1 63706107263277082E18 我执行此代码并且工作正常 但问题不在数组中 我每次都需要它在数组中 const t
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • 使用 jQuery inputmask 插件范围 0-100

    如何创建 0 到 100 范围内的掩码 document ready function masked inputmask 您可以使用jquery inputmask regex extensions js为了那个原因 你可以找到带有所有扩展
  • 如何将一个数组中的所有项目复制到另一个数组中?

    如何将数组的每个元素 其中元素是对象 复制到另一个数组中 以便它们完全独立 我不想更改一个数组中的元素来影响另一个数组 这里的关键是 数组中的条目是对象 并且 您不希望对一个数组中的对象的修改显示在另一个数组中 这意味着我们不仅需要将对象复
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • 如何将MathJax公式转换为img

    Mathjax 现在在我的项目中运行良好 但有一个问题 有没有办法将MathJax的公式 纯html和css 转换成img文件 我可以保存 MathJax 可以配置为生成 SVG 看http docs mathjax org en late
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • React Redux - 在辅助函数中访问现有存储

    我试图在反应组件之外获取存储实例 存储状态 即在单独的辅助函数中 我有我的减速器 我的动作 我在最上面的组件中创建了一个商店 configStore js import createStore from redux import gener
  • Graphql 将多个查询合并(组合)为一个?

    我正在尝试使用 JavaScript 将多个 GraphQL 查询合并为一个查询 我正在寻找这样的东西 let query3 mergeQueries query1 query2 我们事先不知道哪些查询将被组合 假设我有这样的查询 输入查询
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse

随机推荐

  • Tensorflow shuffle batch() 块在纪元结束时

    我正在使用 tf train shuffle batch 创建批量输入图像 它包含一个 min after dequeue 参数 该参数确保内部队列中有指定数量的元素 如果没有 则阻止其他所有元素 images label batch tf
  • 如何从 C++ 源代码创建 DLL,以及如何在其他源代码中使用它们?

    如何从 C 源代码创建 DLL 以及如何在其他源代码中使用它们 DLL 是一个 动态链接库 其工作方式与其他库非常相似 但不与可执行应用程序链接 在运行时 您可以调用特定函数来加载 DLL 并执行其导出的方法 您可以尝试自己创建 DLL 使
  • IFormattable.ToString 无法按十六进制格式的预期工作

    尝试格式化为十六进制时 String Format 和 IFormattable ToString format value 提供不同的结果 使用 IFormattable ToString format value 时如何获得正确的结果
  • 使用 ruby​​ 或 python 在文件中查找

    流行的文本编辑器具有以下在对话框中打开的 在文件中查找 功能 Look For searchtext File Filter txt htm Start From c docs 2009 Report Filenames FileCount
  • 如何解决haskell中的“堆栈空间溢出”

    运行以下程序将打印 空间溢出 当前大小8388608字节 我读过了this and this 但仍然不知道如何解决我的问题 我正在使用foldr 难道不应该保证它是 尾递归 吗 到目前为止 我对 Haskell 感觉很好 直到我知道在使用强
  • 处理异常的最佳方法是什么以及如何在 ASP.NET 中处理它们

    首先 我已经熟悉了简单的异常处理语法 但我问的是处理它们的最佳地点 最佳时间和最佳方式 我正在构建一个 N 层应用程序 所以我认为 DAL 有时会生成一些错误来处理 我刚刚了解了 SqlException 类 该类有什么用 我曾经看到一个处
  • 如何使用 GitLab CI 设置最小单元测试覆盖率?

    我有一个托管在 GitLab 上的项目 该项目已经具有有效的 CI 配置 我想添加 最小代码覆盖率 的概念 我想要的是强制一个正增量 合并请求的代码覆盖率必须大于目标分支的代码覆盖率 除非它已经是 100 我会接受 最低覆盖率 80 之类的
  • 隐藏 woocommerce 设置选项卡

    我想按用户角色隐藏特定的 woocommerce 设置选项卡 不是整个子菜单 而只是一个选项卡 具体请查看 我希望商店经理能够访问大部分设置 但无法影响结账设置 我怎样才能实现这个目标 如果您想删除选项卡而不是使用 CSS 隐藏它们 那么您
  • MemberDomainMap 中的实体框架 CodeFirst KeyNotFoundException

    尝试解决我的 EF datacontext 实现中的一个错误 该错误产生了一个相当神秘的错误 Test Name Nodes can be saved Test FullName MyProj Test Integration AFData
  • 如何绕过唯一ID和引用子节点

    我的 firebase 数据库如下所示 app users gn4t9u4ut304u9g4 email uid 如何引用电子邮件和 uid 当我尝试这个时 rootScope dashtype child users orderByChi
  • 在 Firebase Cloud Messaging 中将一个项目用于多个应用程序的优缺点

    在我们公司 我们有许多适用于 Android 和 iOS 的应用程序 我们想使用 Firebase 来推送通知 那么 我们是否需要创建新的project在每个应用程序的 Firebase 中 或者只使用一个包含所有应用程序的项目会更好吗 两
  • Neo4j Cypher:复制关系并删除节点

    我正在尝试复制节点的所有内部关系 n 到另一个节点 m 两个女巫我都知道id 在删除之前 n 但我无法提出代码 这些关系可能存在也可能不存在 有人摘录吗 您将无法从关系集合中动态创建关系类型 假设即使我们收集所有传入关系如下 START n
  • VB6 中是否有导出函数(而不是类)的方法?

    我想从 Visual Basic 6 创建一个 ActiveX DLL 我想从中调用一些公共函数 我将仅从 VB6 调用此 DLL 然而 似乎只有类被导出 有什么解决方法吗 我知道有一种方法可以使用标准 WINAPI 函数从 VB6 创建
  • 将两个 Xpath 组合成一个循环?

    我正在使用 xpath 从文档中获取信息 唯一的问题是我无法将它们组合成 1 个 for 循环 以便信息在页面上正确显示 我的代码是
  • 从 UI 选择特定时区时在 javascript/jquery 中添加类

    我正在编写如下所示的 html 代码 该代码来自此url In it 显示在 ET 时区下显示 100 正确 因为它们属于正确的日期但对于其他时区 PT MT CT AT NT 某些节目的日期不正确 代码下方的屏幕截图属于该类日程操作栏从下
  • Mysql自动更新事件

    使用 php 和 MySql 无论如何都可以在日期过期时获取数据库中的日期以自行更新 即事件名称 x 的日期为 2012 05 12 在 2012 05 13 日期应更改为 2012 05 19 从 2012 05 12 算起一周 多谢你们
  • 在哪里初始化托管 C++/CLI DLL?

    使用 C CLI 创建 DLL 时 或者我应该问 是否存在与 DllMain 等效的东西 这段初始化代码中不能调用的内容是否有任何限制 Dan 关于加载器锁 C CLI 的 CLR 延迟加载以及混合模式二进制文件的正确初始化 我昨天刚刚在这
  • Pyqt:从函数“动态”附加到 qtextedit

    我的 pyqt gui 中有一个按钮 单击该按钮会运行一个函数 该函数会执行一些冗长的数学计算 在这个函数中有很多打印语句 例如 print finished calculating task1 going on to task2 因此 通
  • java中用simplexml反序列化xml

    我正在尝试使用 SimpleXML 反序列化 xml 字符串 我查看了他们的示例 但我不确定我是否掌握了这个概念 示例 XML 验证
  • 生成不带foreignObject标签的svg

    我在用dom to image js插入 问题是 它会生成一个