代码之家  ›  专栏  ›  技术社区  ›  Salman Arshad

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

  •  52
  • Salman Arshad  · 技术社区  · 15 年前

    我正在开发一个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>
    

    我想知道在HTML文档的主体中放置元标记有多好。它如何影响:

    1. 搜索引擎
    2. 浏览器
    9 回复  |  直到 6 年前
        1
  •  40
  •   kangax    11 年前

    这是当然的 无效 根据HTML4.01。元标记是 only allowed within HEAD (就像,比如,标题)所以通过将其放入一个主体中,实际上是在创建一个无效的标记。

    从粗略的测试来看,有些浏览器(如火狐3.5和Safari 4)在创建文档树时实际上把这些元素放在了头上。这并不奇怪:众所周知,浏览器能够容忍并试图解释各种损坏的标记。

    无效标记很少是个好主意 . 浏览器的非标准处理可能导致各种难以识别的呈现(和行为)不一致。与其依靠浏览器猜测,不如遵循一个标准。

    我不知道搜索引擎对这种标签汤有何反应,但我不会冒险去尝试去发现:)也许它们只分析头部标签以获取某些信息,并且会完全跳过包含身体的标签。或者他们可能认为这些是一些恶意赌博企图和黑名单网页包含这样的标记。谁知道呢。

    底线是“尽量避免”。

        2
  •  28
  •   Michael H    13 年前

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

        3
  •  7
  •   patmortech    12 年前

    我不会这么做的。这些标签不在这里,搜索引擎可能会将其视为垃圾邮件。如果可以重新组织母版页,则始终可以在标题部分添加ContentPlaceholder。我做得很简单:

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

    这样,您就可以在页面的头部分添加您喜欢的任何内容:

    <asp:Content ID="Whatever" ContentPlaceHolderID="HeadTags" runat="server" >
    
        <meta ... >
    
    </asp:Content>
    
        4
  •  5
  •   nullability    12 年前

    如果您的目标是搜索引擎优化,那么遵循标准并将所有元标记放在 <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与GT; 已处理正文中的标记。
    • 第一 <书名; 文档中的标记已被处理,即使它在正文中也是如此。后续 <书名; 标记被忽略。
    • 最早的meta-refresh指令生效,这意味着两个指令都已被处理。

    IE9:

    • 同上,除全部外 <书名; 已忽略正文中的标记。
    • IE10在IE9标准模式下的行为也是这样的。
    • IE9在IE8标准模式下的行为与IE8相同,允许1 <标题> 在身体上贴上标签。

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

        5
  •  3
  •   Stephen Ostermiller    12 年前

    一些用于搜索引擎的元标签不会被页面正文部分的搜索引擎接受。

    例如,Google说它不会在页面的主体中使用rel=canonical,而是只在页面的头部使用rel=canonical。 Here is what Matt Cutts from Google says :

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

        6
  •  2
  •   bummi Haisum Usman    9 年前

    我要你用它。我在各种网页的正文中找到了元标签,它们在前10个搜索中的一个(在谷歌上)。这表明,至少对我来说,西尔发动机不介意你使用这种方法。

    如果没有别的路,你必须走。

        7
  •  0
  •   bummi Haisum Usman    9 年前

    我在身体里放了一些元标签,但那是因为微数据技术。 当我没有带信息的常规元素(我需要根据schema.org词汇表描述对象)时,我用这个内容设置了一个元标记。我更喜欢这样做,用display:none设置一个元素。显示方式:据我所知,没有一个可能会导致更多的谷歌问题。我同意这不是最佳实践,但是当我验证我的文档(HTML5)时,我通过了零错误的验证。另外,我为几个项目做了这个技巧,他们中没有一个在谷歌或其他搜索引擎上有问题。即使是微数据也能提高搜索引擎的排名。我不知道你到底想怎么处理这个元标签,因为我在你的代码中没有看到任何微数据。如果您需要这个方法,我认为它是可以的,但在其他情况下,元元素必须在头部分!

        8
  •  0
  •   cousbrad    7 年前

    在网站中使用元描述标签是无效的标记,但是这并不是一个大问题,因为搜索引擎可以经常在任何地方找到标签。我的网站是这样的,看看我的HTML

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

    meta在网站正文中,但是它已经被google索引,页面meta描述被设置为google搜索结果中的点击文本。

        9
  •  0
  •   Sitaram    6 年前

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

    网络爬虫可以阅读它们 但唯一的问题是 当你需要在Facebook信使、WhatsApp等应用程序上分享你的页面时。

    这些应用程序仅读取 元标签 存在于 头标签 . 所以, og:图像,og:描述 性质 元标签 如果放在里面 身体标签 不会被读取,因此在此类应用程序中共享时不会显示。

    如果它只用于SEO目的,您可以添加 元标签 建议在任何地方添加 头标签 只有