Go – 不呈现HTML注释

Go – 不呈现HTML注释,第1张

概述我正在构建go web应用程序.我在渲染的html页面上发现了一些异常现象.我的所有 HTML评论<! - - >突然没有被渲染.我的猜测是因为我使用的版本(刚更新到更高版本),因为在我更新之前它没问题. 这是我的代码: <!-- prepare the breadcrumbs --><ul class="breadcrumb" data-bind="foreach: viewModel.bre 我正在构建go web应用程序.我在渲染的HTML页面上发现了一些异常现象.我的所有 HTML评论<! - - >突然没有被渲染.我的猜测是因为我使用的版本(刚更新到更高版本),因为在我更新之前它没问题.

这是我的代码:

<!-- prepare the breadcrumbs --><ul  data-bind="foreach: viewmodel.breadcrumbs">    <!-- ko if: ($index() + 1) < len(viewmodel.breadcrumbs()) -->    <li>        <a data-bind="attr: { href: href }">            <i ></i>             <span data-bind="text: Title"></span>        </a>    </li>    <!-- /ko -->    <!-- ko if: ($index() + 1) == len(viewmodel.breadcrumbs()) -->    <li  data-bind="text: Title"></li>    <!-- /ko --></ul>

这是呈现的页面源:

由于这个问题,我使用无容器控制流语法编写的许多KnockoutJs代码都很疯狂,它根本不起作用.

我该怎么做才能解决这个问题?提前致谢

解决方法 html/template包中有一种特殊类型: template.HTML.呈现模板时,模板中此类型的值不会被转义.

因此,您可以将HTML注释“标记”为template.HTML,因此在执行模板期间不会对其进行转义或省略.

一种方法是为模板注册一个自定义函数,这个函数可以从模板调用,它接受一个字符串参数并将其作为template.HTML返回.您可以将所有HTML注释“传递”到此函数,因此,HTML注释将保留在输出中.

看这个例子:

func main() {    t := template.Must(template.New("").Funcs(template.FuncMap{        "safe": func(s string) template.HTML { return template.HTML(s) },}).Parse(src))    t.Execute(os.Stdout,nil)}const src = `<HTML><body>{{safe "<!-- This is a comment -->"}}<div>Some <b>HTML</b> content</div></body></HTML>`

输出(在Go Playground上试试):

<HTML><body><!-- This is a comment --><div>Some <b>HTML</b> content</div></body></HTML>

所以基本上在注册我们的safe()函数之后,将所有HTML注释转换为调用此safe()函数并传递原始HTML注释的模板 *** 作.

转换这个:

<!-- Some HTML comment -->

对此:

{{safe "<!-- Some HTML comment -->"}}

或者(无论你喜欢):

{{"<!-- Some HTML comment -->" | safe}}

你很高兴去.

注意:如果您的HTML注释包含引号(‘“’),您可以/必须像这样转义它:

{{safe "<!-- Some \"HTML\" comment -->"}}

注意#2:请注意,您不应该使用条件HTML注释,因为这可能会破坏HTML / template包的上下文敏感转义.详情请参阅this.

总结

以上是内存溢出为你收集整理的Go – 不呈现HTML注释全部内容,希望文章能够帮你解决Go – 不呈现HTML注释所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存