javascript - 如何在 Phoenix (Elixir) 渲染中注入(inject) HTML/使用变量操作 DOM,例如动态插入 SVG 或 PNG?

标签 javascript dom phoenix-framework elixir

如果我有一些 svg 通过分配给 svg 变量上的 View ,我可以使用以下方式渲染到 View 中:

<%= @svg %>

但是,在 DOM 中,我可以检查页面并智能地看到 phoenix 默认不渲染 SVG,因为它是字符串表示形式。但是,我不知道如何覆盖该默认值,以便我可以正确地注入(inject) dom/渲染 SVG,而不仅仅是在页面中显示字符串,而是实际渲染图像。我该怎么做?我是否必须在事后使用 javascript 进行渲染 - 这也没关系,但仅在服务器端渲染会非常好。

非常感谢!

最佳答案

为了使内容不被转义,可以使用 Phoenix.HTML.raw/1功能。

以下是 SVG QRCode 生成的示例:

<section>
  <p style="text-align:center">
    <%=
      Routes.some_path(MyApp.Endpoint, :index, @some_id)
      |> QRCode.create!(:high)
      |> QRCode.Svg.create()
      |> raw()
    %>
  </p>
</section>

生成内联 SVG。请注意,raw/1 函数会自动导入到模板中。

关于javascript - 如何在 Phoenix (Elixir) 渲染中注入(inject) HTML/使用变量操作 DOM,例如动态插入 SVG 或 PNG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64037714/

相关文章:

javascript - Mithril 模板转换器使用

javascript - 让每个按钮操作其上方的内容

postgresql - Phoenix Ecto Postgres 表未创建

authorization - Phoenix : Authorizing an authenticated user to join a channel

javascript - jQuery 1.6.4 和 RadioButtonList 问题

Javascript 对象访问

html - iframe 何时开始在页面上加载?

elixir - has_many 关联的嵌套形式

javascript - 在 Thymeleaf 中,如何使用单独的 HTML 和 JavaScript 解析器将 JavaScript 从文件复制到生成的 HTML 中

javascript - 捕获 AJAX 响应失败