英文:
How to stop html template from escaping
问题
我有一个HTML模板,我想要在模板之外插入一些JavaScript代码。在我的模板数据结构中,我创建了一个字符串字段JS string
,并通过{{.JS}}
调用它。问题是在浏览器中显示的所有内容都被转义了:
换行符是\n
<
和>
分别被转义为\u003c
和\u003e
"
被转义为\"
在模板内部相同的符号是正常的。如果我将我的JS
字段打印到控制台上,也是正常的。我看到一些类似的问题通过使用template.HTML
类型而不是string
来解决。但在我的情况下,这根本不起作用。
编辑1
实际上的上下文是:
<script language="JavaScript">
var options = {
{{.JS}}
};
</script>
英文:
I have an html template where i want to insert some JavaScript code from outside of template itself. In my template data struct i have created a string field JS string
and call it with {{.JS}}
. The problem is that everything in browser is escaped:
newlines are \n
<
and >
are \u003c
and \u003e
"
is \"
Same symbols inside of a template are fine. If I Print my JS
field into console it is also fine. I have seen some similar problems solved by using template.HTML
type instead of string
. In my case it does not work at all.
EDIT 1
The actual context is
<script language="JavaScript">
var options = {
{{.JS}}
};
</script>
答案1
得分: 13
要翻译的内容如下:
要么将字段的类型更改为template.JS,如下所示:
type Tmpl struct {
// ...
JS template.JS
}
要么声明一个简单的函数,将string
转换为template.JS
类型,如下所示:
func toJS(s string) template.JS {
return template.JS(s)
}
然后使用Funcs方法注册该函数,并在模板中使用它,如下所示:
{{toJS .JS}}
英文:
Either change the field's type to template.JS like so:
type Tmpl struct {
// ...
JS template.JS
}
Or declare a simple function that converts a string
to the template.JS
type like so:
func toJS(s string) template.JS {
return template.JS(s)
}
And then register the function with the Funcs method and use it in your template like so:
{{toJS .JS}}
答案2
得分: 4
尝试将JS
的类型设置为template.JS
:
import "html/template"
type x struct {
JS template.JS
}
可以在这里找到文档。
英文:
Try setting the type of JS
to template.JS
:
import "html/template"
type x struct {
JS template.JS
}
Documentation can be found here.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论