【问题标题】:How to handle meta elements not validating in HTML5?如何处理 HTML5 中未验证的元元素?
【发布时间】:2011-03-30 05:16:14
【问题描述】:

在 HTML5 中,一些元元素(还没有?)不验证,例如:

<meta http-equiv="x-ua-compatible" content="ie=emulateie7;chrome=1">
<meta http-equiv="imagetoolbar" content="no">

条件注释在这里是合适的解决方案吗?元元素还会按预期工作吗?

<!--[if IE]><meta http-equiv="x-ua-compatible" content="ie=emulateie7;chrome=1"><![endif]-->
<!--[if lt IE 7]><meta http-equiv="imagetoolbar" content="no"><![endif]-->

使用 .htaccess 文件而不是元元素(不幸的是,这并不总是可能的),这是正确的方法吗?

<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
  # BrowserMatch MSIE ie OR?
    BrowserMatch MSIE emulate_ie7
  # Header set X-UA-Compatible "IE=EmulateIE7" env=ie OR?
    Header set X-UA-Compatible "IE=EmulateIE7" env=emulate_ie7
    BrowserMatch chromeframe gcf
    Header append X-UA-Compatible "chrome=1" env=gcf
  </IfModule>
</IfModule>

谢谢!

【问题讨论】:

    标签: validation .htaccess html meta-tags


    【解决方案1】:

    对于“x-ua-compatible”标签,我个人选择了 .htaccess 指令。我按照html5boilerplate模板:

    # ----------------------------------------------------------------------
    # Better website experience for IE users
    # ----------------------------------------------------------------------
    
    # Force the latest IE version, in various cases when it may fall back to IE7 mode
    #  github.com/rails/rails/commit/123eb25#commitcomment-118920
    # Use ChromeFrame if it's installed for a better experience for the poor IE folk
    
    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    
    <IfModule mod_headers.c>
    # Because X-UA-Compatible isn't sent to non-IE (to save header bytes),
    #   We need to inform proxies that content changes based on UA
      Header append Vary User-Agent
    # Cache control is set only if mod_headers is enabled, so that's unncessary to declare
    </IfModule>
    

    【讨论】:

      【解决方案2】:

      您可以注册additional pragma directives:

      在某些情况下,预定义的编译指令集的扩展可能会在WHATWG Wiki PragmaExtensions page 中注册。

      然后需要一致性检查器来识别它们:

      一致性检查人员必须使用 WHATWG Wiki PragmaExtensions 页面上提供的信息来确定是否允许某个值:必须接受本规范中定义的值或上述页面中列出的值,而本规范或未列出的值上述页面上的内容必须被视为无效而被拒绝。

      虽然这可能是一项艰巨的工作,不知道是否有任何原因导致这些标题以前没有列出,但我想你会发现如果你尝试一下:)

      根据MS docs,您的 .htaccess 看起来不错,根据您使用的 Apache 版本可能会有一些变化,但最好的检查方法可能是尝试并查看。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 2020-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        相关资源
        最近更新 更多