我试图在 Ractive.js 呈现的数据中包含 HTML 标签(自动下标化学符号,以防万一),但 Ractive 只是插入文本而不是创建新的 DOM 元素。

一个最小的测试用例,改编自 60-second setup guide :

<script id='template' type='text/ractive'>
    <p>Hello, {{name}}!</p>
</script>

<script type="text/javscript">
    var ractive = new Ractive({
    el: 'container',

    template: '#template',

    data: { name: '<b>world</b>' }
});

正如您在 this JSfiddle 中看到的,结果是 Hello, <b>world</b> 而不是预期的“Hello, world

我猜这与 Ractive 处理表达式的方式有关..但我还没有达到源代码有多大意义的地步。

关于如何获得预期行为的任何想法?

最佳答案

是的!您可以使用三重:

<p>Hello, {{{name}}}!</p>

在传统的 Mustache 中,这意味着“不要逃避 name 的值”。翻译成 Ractive,它的意思是“将内容插入为 HTML 而不是文本。

请注意 在插入之前未对 HTML 进行清理,因此如果 name 来自用户输入,则可能存在 XSS 和其他恶意: http://jsfiddle.net/rich_harris/4jBC8/

关于javascript - 在 Ractive.js 中使用 HTML 标签呈现内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23514951/

10-13 01:01