通过html / template删除传递参数周围的空格

问题描述 投票:0回答:1

当我将参数传递给onclick函数时,我在该参数周围有空格,为什么以及如何删除它们?

t, _ := template.New("").Parse(`<div onclick="test({{.}})">{{.}}</div>`)
t.Execute(os.Stdout, 1)

结果:

<div onclick="test( 1 )">1</div>

playground

编辑:

由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)

playground

go
1个回答
1
投票

这是Golang做的一些事情,以确保恶意JS不会在您的模板中结束。如果您指定传入的内容对于javascript是安全的,那么它将正常工作。

键入JS

使用此类型会带来安全风险:封装内容应来自可信来源,因为它将逐字包含在模板输出中。

https://play.golang.org/p/TUOECg1YDtl

t.Execute(os.Stdout, template.JS("1"))

结果:

<div onclick="test(1)">1</div>
© www.soinside.com 2019 - 2024. All rights reserved.