【问题标题】:How do I remove meta tag for layout?如何删除布局的元标记?
【发布时间】:2011-06-07 20:28:06
【问题描述】:

我为我的 grails 应用程序定义了一个布局“mainTemplate”。我使用g:layoutHead(所以我的页面将它们的头部附加到布局中)。

但是当我查看主页的源代码时,我仍然会得到布局的元信息。

虽然我在定义的模板中呈现了我的页面,但我认为 grails 应该已经删除了这个元信息。

http://grails.org/doc/1.3.x/ref/Tags/layoutHead.html

如何删除它?还是我在这里遗漏了什么?

【问题讨论】:

  • 您能否详细说明为什么您希望删除<meta> 标签?
  • 没有必要删除它,但我希望它不应该存在,我觉得我错过了什么或者它是一些错误。

标签: grails groovy gsp meta-tags sitemesh


【解决方案1】:

如果您使用<meta> 标记来定义布局,则它不容易移除。但是,您可以在视图中使用<g:applyLayout> 来避免使用<meta> 标记。

<!-- a GSP view, e.g. views/foo/index.gsp -->
<g:applyLayout name="main"><!-- value for "name" is the same as what you'd use in the meta tag -->
  <html>
    <head><title>My Decorated Page</title></head>
    <body>
      Some content
    </body>
  </html>
</g:applyLayout>

实际上,您所做的是从视图中删除 &lt;meta&gt; 标记,然后用 &lt;g:applyLayout&gt; 包装视图的内容。

诚然,这是很多工作;您需要更新所有视图,并且还可能更新 src/templates 中的脚手架视图(如果您正在使用脚手架)。老实说,从最终视图中删除 &lt;meta&gt; 标记似乎在很大程度上是不必要的,除了一些非常特殊的情况(例如,与“布局”的命名冲突,或者您只是 拥有 以防止这些额外的情况〜通过网络发送 35 个字符,这对我来说似乎是非常微优化的)。

【讨论】:

  • 谢谢 Rob,这肯定是一个帮助。尽管将其更改为我所有的 GSP,但它的工作量很大。
【解决方案2】:

我最终不得不删除 &lt;meta&gt; 标签以符合我们的 WCAG 验证器1

为了方便起见,我在其中一个标签库中添加了一项。

def wcagValidLayoutHead = {
  def head = request["__sitemesh__page"].head
  out << head.replaceAll(/<meta .*name=['"]layout['"].*\/>/, '')
}

然后像这样使用它:

<head>
  <title><g:layoutTitle default="My Valid HTML Page"/></title>
  <my:wcagValidLayoutHead/>
</head>

这有点小技巧,我确信正则表达式可以提高速度,但它确实有效。


1:我不相信它实际上是无效的 HTML,但如果它让验证器满意,我可以继续处理更大更好的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多