如何使用 Golang 在 html 模板 (html/template) 中注入

有没有办法在 Golang html 模板 ( ) 中将 Javascript 作为变量注入html/template。我期待脚本被注入到模板中,但是脚本被作为字符串注入到".


模板.html


...

<head>

    {{ .myScript }}

</head>

...

解析器.go


    ...

    fp := path.Join("dir", "shop_template.html")

    tmpl, err := template.ParseFiles(fp)

    if err != nil {

        return err

    }

    

    return tmpl.Execute(writer, myObject{Script: "<script>console.log('Hello World!');</script>"})

    ...

呈现的 html 输出:


...

<head>

    "<script>console.log('Hello World!');</script>"

</head>

...

预期产出


<head>

    <script>console.log('Hello World!');</script>

   // And should log Hello World! in the console.

</head>


一只甜甜圈
浏览 259回答 1
1回答

萧十郎

假设您使用的是 html/template 包,这是预期的行为。常规字符串不应该能够注入 HTML/JS 代码。如果您信任内容,您可以使用template.JS或template.HTML类型注入 JS 和 HTML 代码。return tmpl.Execute(writer, myObject{&nbsp; Script: template.HTML("<script>console.log('Hello World!');</script>")})当然,你需要声明:type myObject struct {&nbsp; &nbsp;Script template.HTML&nbsp; &nbsp;...}而不是string.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go