英文:
Golang. html/template. How to put a unquoted string to <script>?
问题
我有一个模板:
<script type="text/template" id="data-user">{{.User}}</script>
其中"User"是以URL编码格式的JSON字符串。类似于
%7Bdata%22%3A%5B%7B%7D%7D
但是默认的html/template会将其放在引号中,如下所示
"%7Bdata%22%3A%5B%7B%7D%7D"
我尝试了html/template godoc参考文档中的方法
Context {{.}} After {{.}} O'Reilly: How are &lt;i&gt;you&lt;/i&gt;? <a title='{{.}}'> O&#39;Reilly: How are you? <a href="/{{.}}"> O&#39;Reilly: How are %3ci%3eyou%3c/i%3e? <a href="?q={{.}}"> O&#39;Reilly%3a%20How%20are%3ci%3e...%3f <a onx='f("{{.}}")'> O\x27Reilly: How are \x3ci\x3eyou...? <a onx='f({{.}})'> "O\x27Reilly: How are \x3ci\x3eyou...?" <a onx='pattern = /{{.}}/;'> O\x27Reilly: How are \x3ci\x3eyou...\x3f
但是我没有成功。感谢你的帮助。
英文:
I have a template:
<script type="text/template" id="data-user">{{.User}}</script>
Where "User" is json string in URL encoding format. Something like
%7Bdata%22%3A%5B%7B%7D%7D
But default html/template put it inside quotes like
"%7Bdata%22%3A%5B%7B%7D%7D"
I tried that stuff from html/template godoc reference
Context {{.}} After
{{.}} O'Reilly: How are &lt;i&gt;you&lt;/i&gt;?
<a title='{{.}}'> O&#39;Reilly: How are you?
<a href="/{{.}}"> O&#39;Reilly: How are %3ci%3eyou%3c/i%3e?
<a href="?q={{.}}"> O&#39;Reilly%3a%20How%20are%3ci%3e...%3f
<a onx='f("{{.}}")'> O\x27Reilly: How are \x3ci\x3eyou...?
<a onx='f({{.}})'> "O\x27Reilly: How are \x3ci\x3eyou...?"
<a onx='pattern = /{{.}}/;'> O\x27Reilly: How are \x3ci\x3eyou...\x3f
But I haven't had success.
Appreciate your help
答案1
得分: 3
谢谢!我找到了解决方案。有一个名为template.JS的类型。
我将字符串转换为template.JS,它可以正常工作。
看看这个例子:
t := template.Must(template.New("").Parse(`<script>{{.}}</script>` + "\n"))
t.Execute(os.Stdout, `{"data":[{"}}`)
t.Execute(os.Stdout, template.JS(`{"data":[{"}}`))
输出:
<script>"{"data":[{"}}"</script>
<script>{"data":[{"}}<script>
在<kbd>Go Playground</kbd>上尝试一下。
英文:
Thank you! I found solution. There are template.JS type.
I converted string to template.JS and it works.
See this example:
t := template.Must(template.New("").Parse(`<script>{{.}}</script>` + "\n"))
t.Execute(os.Stdout, "%7Bdata%22%3A%5B%7B%7D%7D")
t.Execute(os.Stdout, template.JS("%7Bdata%22%3A%5B%7B%7D%7D"))
Output:
<script>"%7Bdata%22%3A%5B%7B%7D%7D"</script>
<script>%7Bdata%22%3A%5B%7B%7D%7D</script>
Try these on the <kbd>Go Playground</kbd>.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论