下面的代码:
{{range . }}
<td {{ if not .IsDisabled }}onclick="return toggle_active($(this))"{{ end }}>
[x]
</td>
{{end}}
这是可行的,它把onclick事件像它应该的那样。
但是,如果我尝试将onclick
事件动态地创建为字符串(无论是在模板中还是作为Go函数),它都不起作用。
示例:
{{$clickEvent := "return toggle_active($(this));"}}
<td {{$clickEvent}}>[x]</td>
或者:
func (d TemplateObject) Click() string {
return "onclick=\"toggle_active($(this))\""
}
<td {{.Click}}>[x]</td>
它在HTML中呈现如下:
如果我不把它放进<tag>
本身,<td>{{$ClickEvent}}</td>
,它会把它打印成字符串。
我怎样才能让属性正确地呈现?
1条答案
按热度按时间carvr3hs1#
你需要做的
以便它知道该字符串可以安全地用作属性
https://pkg.go.dev/html/template#HTMLAttr
HTMLAttr封装来自受信任源(例如
dir="ltr"
)的HTML属性。使用此类型会带来安全风险:封装的内容应该来自受信任的来源,因为它将被逐字地包括在模板输出中。