Удалить пробелы вокруг переданного аргумента через HTML / шаблон - PullRequest
0 голосов
/ 02 марта 2019

Когда я передаю аргумент в функцию onclick, я получаю пробелы вокруг этого аргумента, почему и как их удалить?

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

Результат:

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

детская площадка

Редактировать:

Обновлено с помощью Dave help, из шаблона мы можем сделать что-то вроде этого:

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)

детская площадка

1 Ответ

0 голосов
/ 02 марта 2019

Это результат того, что Golang предпринял некоторые действия, чтобы гарантировать, что вредоносный JS не окажется в вашем шаблоне.Если вы укажете, что то, что вы передаете, безопасно для javascript, оно будет работать нормально.

тип JS

Использование этого типа представляет угрозу безопасности: инкапсулированный контент должен поступать из надежного источника, так как он будет дословно включен в выходные данные шаблона.

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

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

Результат:

<div onclick="test(1)">1</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...