Golang:停止转义html模板

WOR*_*rus 2 escaping go

我有一个html模板,我想从模板本身之外插入一些JavaScript代码.在我的模板数据结构中,我创建了一个字符串字段JS string并调用它{{.JS}}.问题是浏览器中的所有内容都被转义:

新行是 \n

<并且>\u003c\u003e

"\"

模板内的相同符号很好.如果我将我的JS字段打印到控制台,它也没关系.我已经看到一些类似的问题通过使用template.HTML类型而不是string.就我而言,根本不起作用.

编辑1

实际情况是

<script language="JavaScript">
    var options = {
        {{.JS}}
    };
</script>
Run Code Online (Sandbox Code Playgroud)

mko*_*iva 9

将字段的类型更改为template.JS,如下所示:

type Tmpl struct {
    // ...
    JS template.JS
}
Run Code Online (Sandbox Code Playgroud)

或者声明一个简单的函数,将a转换为类似stringtemplate.JS类型:

func toJS(s string) template.JS {
    return template.JS(s)
}
Run Code Online (Sandbox Code Playgroud)

然后使用Funcs方法注册该函数并在模板中使用它,如下所示:

{{toJS .JS}}
Run Code Online (Sandbox Code Playgroud)


sys*_*cll 5

尝试将 的类型设置JStemplate.JS

import "html/template"

type x struct {
        JS template.JS
}
Run Code Online (Sandbox Code Playgroud)

可以在此处找到文档。

  • 它成功了,谢谢。但我必须选择 @mkmkopriva 的答案,因为他快了 1 分钟。不过还是点赞了 (2认同)