6

我正在使用 Groovy 1.8 XML MarkupBuilder 构建一个包含<script>标签的 HTML 页面。

当我在 Firefox 18 中加载页面时,我看到一个空白页面,而不是预期的结果。

这似乎是由于生成的<script>标签没有补充</script>标签,即使没有内容可以保证</script>标签。(参见:https ://stackoverflow.com/questions/69913/why-dont-self-closing-script-tags-work )

示例 Groovy 代码:

def builder = new groovy.xml.MarkupBuilder( out )

builder.html {
  head {
    script( type:'text/javascript', src:'//example.com/example.js' )
  }

  body {
    p("Hello...Newman.")
  }
}

如果我使用 Firefox 的“查看页面源代码”(Ctrl-U)检查(空白)呈现页面的 HTML,我会看到:

<html>
  <head>
    <script type='text/javascript' src='//example.com/example.js />
  </head>
  <body>
    <p>Hello...Newman.</p>
  </body>
</html>

仔细观察,我看到<script ... />标签上的“/”呈现为红色,“/”上的悬停文本显示“在非空 HTML 元素上使用的自关闭语法 (“/>”)。忽略斜线并将其视​​为开始标签。”

那么,如何<script>使用 Groovy XML MarkupBuilder 生成有效的 HTML 标记?

4

2 回答 2

9

如果你定义了一些空的内容,那么脚本标签将会有一个单独的结束标签:

script( '', type:'text/javascript', src:'//example.com/example.js' )
于 2013-02-13T20:02:15.420 回答
3

或者你可以使用

script(type:'text/javascript', src:'//example.com/example.js){mkp.yield("")}

于 2013-07-22T19:25:13.737 回答