簡體   English   中英

如何在 Go 模板中添加 HTML 標簽屬性

[英]How to add an HTML Tag Attribute in GoLang Template

我有以下代碼:

{{range . }}
    <td {{ if not .IsDisabled }}onclick="return toggle_active($(this))"{{ end }}>
      [x]
    </td>
{{end}}

這有效,它按應有的方式放置 onclick 事件。

但是,如果我嘗試將onclick事件動態創建為字符串(在模板中,或作為 Go function,它不起作用。

例子:

{{$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>中,它會將其打印為字符串。

如何讓屬性正確呈現?

你需要做

func (d TemplateObject) Click() template.HTMLAttr {
    return "onclick=\"toggle_active($(this))\""
}

這樣它就知道該字符串可以安全地用作屬性

https://pkg.go.dev/html/template#HTMLAttr

HTMLAttr 封裝了一個來自可信來源的 HTML 屬性,例如dir="ltr" 使用這種類型存在安全風險:封裝的內容應來自可信來源,因為它將逐字包含在模板 output 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM