当我将参数传递给onclick函数时,在该参数周围有空格,为什么以及如何删除它们?
t, _ := template.New("").Parse(`<div onclick="test({{.}})">{{.}}</div>`)
t.Execute(os.Stdout, 1)
结果:
<div onclick="test( 1 )">1</div>
编辑:
在Dave帮助的帮助下,我们可以通过模板进行以下操作:
t, _ := template.New("").Funcs(template.FuncMap{
"test": func(i interface{}) template.JS {
switch i.(type) {
case int:
s := strconv.Itoa(i.(int))
return template.JS(s)
// other types
default:
panic("bad type")
}
},
}).Parse(`<div onclick="test({{test .}})">{{.}}</div>`)
t.Execute(os.Stdout, 1)
答案 0 :(得分:1)
这是Golang做一些事情以确保恶意JS不会出现在模板中的结果。如果您指定要传入的内容对于javascript是安全的,则可以正常使用。
键入JS
使用这种类型会带来安全风险:封装的内容应来自受信任的来源,因为它将逐字包含在模板输出中。
https://play.golang.org/p/TUOECg1YDtl
t.Execute(os.Stdout, template.JS("1"))
结果:
<div onclick="test(1)">1</div>