it-swarm.asia

如果元标记存在于文档正文中会发生什么?

我正在研究ASP应用程序,代码,模板和文件的组织方式不允许我更改body标签之外的任何内容。所以我在考虑在体内插入元标记 - 就像这样:

<!-- FEW ASP INCLUDES -->
<html>
    <head>
    <!-- FALLBACK TITLE AND DESCRIPTION -->
    <title>Default Title</title>
    <meta name="description" content="Default Description">
</head>
<body>
    <!-- SOME HTML MARKUP -->
    <div class="dynamic-content">
        <!-- InstanceBeginEditable name="dynamic-content" -->
        <!-- THIS IS WHERE I CAN WRITE ASP CODE -->
        <title><%= Page.Meta.GetTitle( yada, yada ) %></title>
        <meta name="description" content="<%= Page.Meta.GetDescription( yada, yada ) %>">
        <!-- InstanceEndEditable -->
    </div>
    <!-- SOME MORE HTML MARKUP -->
</body>
</html>

我想知道将meta标签放在HTML文档的正文中有多好。它如何影响:

  1. 搜索引擎
  2. 浏览器
52
Salman A

这当然是 无效 根据HTML4.01。 META标签是 只允许在HEAD (就像TITLE一样),所以通过将它放入BODY,你实际上是在创建一个无效的标记。

在粗略测试中,似乎某些浏览器(例如Firefox 3.5和Safari 4)在创建文档树时实际将这些元素放入HEAD。这并不奇怪:众所周知,浏览器会容忍并试图解释各种破坏的标记。

无效标记很少是个好主意 。浏览器的非标准处理可能会导致各种难以处理的渲染(和行为)不一致。而不是依赖浏览器猜测,最好遵循标准。

我不知道搜索引擎如何对这样的标签汤做出反应,但我不会冒险尝试找出:)也许他们只解析HEAD标签以获取某些信息,并且会完全跳过你的BODY包含的标签。或许他们认为这些是恶意赌博尝试和包含此类标记的黑名单页面。谁知道。

底线 - 尽可能避免这种情况。

40
kangax

最重要的是尽可能避免这种情况 当DOCTYPE禁止它时 。我认为这在HTML5中是绝对允许的,在使用微数据的情况下非常有用。示例: http://schema.org/Event

28
Michael H

我不会这样做。这不是那些标签的去向,搜索引擎可能会将其视为垃圾邮件。如果您可以重新组织母版页,则始终可以在head部分中添加contentplaceholder。我完成了以下工作:

<asp:ContentPlaceHolder ID="HeadTags" runat="server" />

通过这种方式,您可以在页面上添加您喜欢的任何内容:

<asp:Content ID="Whatever" ContentPlaceHolderID="HeadTags" runat="server" >

    <meta ... >

</asp:Content>
7
John Lockwood

如果您的目标是搜索引擎优化,那么遵循标准并将所有元标记放在<head>中可能是个好主意。但是,就浏览器行为而言,如果将<meta>标记放入<body>,它们仍将起作用。我决定在符合标准的文档中使用多个<meta http-equiv="refresh"/>标记和<title>标记来测试它。

我的测试结果:

Firefox 18,Firefox 3.6,Firefox Mobile,Chrome 24,Chrome for Mobile,Opera 12,IE6,IE8,IE10:

  • 处理了正文中的所有<meta>标记。
  • 文档中的第一个<title>标记已处理完毕,即使它在正文中也是如此。后续<title>标记被忽略。
  • 最早的元刷新指令生效,暗示两者都已处理完毕。

IE9:

  • 与上面相同,但忽略了正文中的所有<title>标记。
  • IE9标准模式下的IE10也表现得像这样。
  • IE8标准模式下的IE9与IE8相同,允许在主体中使用1 <title>标记。

那么,当您在体内使用元标记时会发生什么?总的来说,它们似乎工作得很好。 meta标签可能会被处理,所以如果你不能把它们放在头部那么我就不会担心太多。

5
nullability

一些用于搜索引擎的元标记将不会被页面正文部分中的搜索引擎所尊重。

例如,Google表示它不会在页面正文中使用rel = canonical,而只是在页面的头部。 以下是Google的Matt Cutts所说的

我们不允许在身体中使用rel = canonical(因为正如我所提到的,人们会垃圾邮件),

3
Stephen Ostermiller

我会说你要用它。我在各种网页上找到了身体内部的元标记,并且它们位于十大搜索之一(谷歌上)。至少在我看来,如果你使用过这种方法,那么searh引擎并不介意。

如果没有别的办法,你必须继续前进。

2
Parvinder Singh

meta标签可以添加到HTML中的任何位置。

网页抓取工具可以读取它们但唯一的问题是当你必须通过facebook messenger,whatsapp等应用程序共享你的网页时。

这些应用程序只读取head标签中的meta标签。因此,meta tagog:image,og:description属性(如果放在body tag中)不会被读取,因此在这些应用程序中共享时不会显示。

如果它仅用于SEO目的,你可以在任何地方添加meta标签,但建议只在head标签内添加

0
Sitaram

我已经将一些元标记放入体内,但这是因为Microdata技术。当我没有带有信息的常规元素时,我需要根据schema.org词汇描述对象,我设置了一个带有此内容的元标记。我更喜欢这样做,用display:none设置元素。就我所知,显示方式:无可能导致更多谷歌问题而不是这个问题。我同意这不是最好的做法,但是当我验证我的文档(HTML5)时,我通过了验证,没有错误。此外,我已经为几个项目完成了这个技巧,但没有一个项目存在谷歌或其他搜索引擎的问题。甚至微数据也提高了搜索引擎的排名。我不知道你想用这个元标记到底是什么,因为我没有在你的代码中看到任何微数据。如果您需要这种方法我觉得没关系,但在其他情况下元元素必须在头部!

0
Kaloyan Stamatov

在网站中使用META描述标记是无效标记,但这不是一个大问题,因为搜索引擎可以定期找到标记。我的网站这样做,看看我的HTML

http://cameras.specced.co.uk/compare/268/Canon_EOS_200D

META在网站BODY中,但它已被谷歌索引,并且页面元描述已被设置为谷歌搜索结果中的点击文本。

0
cousbrad