首页 > 解决方案 > 防止车把解析html的某些标签或字符?

问题描述

我想用 javaScript 代码替换 html 文件部分。需要使用JS事件。由于 hbs 只替换文本,因此我想为此在 html 中添加一个 js 脚本。JS 代码保存为字符串并作为值传递,我想从 html 执行它。使用带 hbs 的 node js 服务器端渲染。

车把解析的 TS 代码:

const testScript = "\<script\> function displayDate(o) \{ let x = \"hello\"\;document.getElementById(\"demo\").innerHTML = o\;} </script>";


res.render("home", { testScript });

主页 html/hbs 代码:

 <div>

{{testScript}}

 </div>

结果是:

<div>

&lt;script&gt; alert(&quot;Hello JavaScript!&quot;) &lt;/script&gt;

</div>

预期结果是:

 <script>
function displayDate(o) {
    let x = "hello";
  document.getElementById("demo").innerHTML = o;
}
</script>


<p id="demo"></p>

如果可以阻止车把将某些标签解析为已更改的标签,那么可能会发生预期的结果。

无法通过使用此问题中提到的短语进行搜索来找到解决方案。所以请给我提一个解决方案,让字符串保持原样用于车把解析。

是否可以告诉车把不要解析某些标签?

标签: javascriptnode.jshandlebars.js

解决方案


您需要按照官方文档使用三重存储。三重垃圾不会转义输出。

<div>
{{{testScript}}}
</div>

推荐阅读