javascript - 防止车把解析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>
<script> alert("Hello JavaScript!") </script>
</div>
预期结果是:
<script>
function displayDate(o) {
let x = "hello";
document.getElementById("demo").innerHTML = o;
}
</script>
<p id="demo"></p>
如果可以阻止车把将某些标签解析为已更改的标签,那么可能会发生预期的结果。
无法通过使用此问题中提到的短语进行搜索来找到解决方案。所以请给我提一个解决方案,让字符串保持原样用于车把解析。
是否可以告诉车把不要解析某些标签?
解决方案
您需要按照官方文档使用三重存储。三重垃圾不会转义输出。
<div>
{{{testScript}}}
</div>
推荐阅读
- node.js - 使用 webpack 使用基于节点环境的特定文件
- unit-testing - ember 单元测试模型
- javascript - 如果按下按钮,则打开类/窗口
- html - 为什么css不会应用更改?
- javascript - 当我粘贴到 Facebook、Whatsapp 等其他网站时如何显示图像预览和标题
- java - 将方法与 runnable 同步执行一些异步调用
- erlang - 我们在 Erlang 中有任何 phoenix gen socket 客户端吗
- docker - Spring Boot Admin - 奇怪地在 Docker Swarm 中运行
- typo3 - Typo3 损坏:前端/后端空白页,即使在恢复备份后也没有错误
- orbeon - 注销不适用于 DIGEST 身份验证