programing tip

요소 메타의 속성 http-equiv에 대해 잘못된 값 X-UA 호환

itbloger 2020. 8. 4. 07:47
반응형

요소 메타의 속성 http-equiv에 대해 잘못된 값 X-UA 호환


metaHTML5 보일러 플레이트 와 동일한 것을 사용했으며 W3C HTML 유효성 검사기가 불평합니다.

요소 메타의 속성 http-equiv에 대해 잘못된 값 X-UA-Compatible.

<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>

meta태그에 어떤 문제가 있습니까?


X-UA-Compatible은 "표준"HTML ( 사양에서 참조 하는 공개적으로 편집 가능한 위키 페이지 에 나타나는 FSVO "표준" )이 아니거나 유효성 검사기가 해당 위키의 현재 상태로 최신 상태가 아닙니다.

작성 당시 (20130326) X-UA-Compatible은 Wiki 페이지의 다음 섹션에있는 섹션 아래에 나타납니다. "다음 제안 된 확장은 아직 HTML 사양의 모든 등록 요구 사항을 준수하지 않으므로 아직 유효하지 않습니다. 서류." 따라서 유효성 검사기는이 값을 거부 할 수 있습니다.


어떤 기능에도 영향을주지 않고 기술적으로 유효한 (모든 사람이 녹색 파비콘을보고 싶어하는 경우) "if IE"태그로 감싸면됩니다.

<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->

가능한 한 가지 해결책은 Aaron Layton의 멋진 글 에서 제안한 것처럼 헤더에 수정 서버 측을 구현하는 것 입니다. (모든 신용은 그에게 가야하며, 표절보다 말을 바꾸겠습니다 ...)

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

"인터넷 익스플로러가이 라인을 만나면 플러그인이 설치된 경우 첫 번째 Chrome 프레임에 사용되는 엔진을 변경 한 다음 Edge (브라우저에서 지원되는 가장 높은 문서 모드)로 변경합니다."

단계 :

  • 페이지 유효성 검사 수정 – 태그를 간단히 제거하면됩니다.
  • 렌더링 속도 – 브라우저가 태그를보고 기다리는 모드를 기다리는 대신 응답 헤더로 올바른 모드를 미리 보냅니다.
  • Internet Explorer에 대한 수정 사항 만 표시해야합니다. 일부 서버 측 브라우저 감지 기능 만 사용하고 IE에만 ​​전송합니다.

PHP에서 헤더를 추가하려면 다음을 페이지에 추가하면됩니다.

if (isset($_SERVER['HTTP_USER_AGENT']) &&
    (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
        header('X-UA-Compatible: IE=edge,chrome=1');


또는 다음과 같이 .htaccess 파일에 추가 할 수 있습니다.

<FilesMatch "\.(htm|html|php)$">
    <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
    </IfModule>
</FilesMatch>


원본 기사에 링크하고 가능한주의 사항에 대한 주석을 확인하십시오. C # 구현도 포함합니다.

X-UA-Compatible 불량 값 수정

도움이 되었기를 바랍니다!


<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

가능한 수정 사항은이 기사를 참조하십시오.


.. 이것이 좋은 대답일까요?

PHP로 HTTP 헤더 설정 :

이것은 내 작품이 아니지만 다른 사람들에게도 유용하기를 바랍니다.


유효성 검증기 src 코드를 다운로드 / 빌드하면 직접 지원을 추가 할 수 있습니다.

같은 파일에 다음을 추가합니다 html5-meta-X-UA-Compatible.rnc다음에 포함) html5full.rnc.

나는 이것을했고 유효성 검사에 잘 작동합니다.

meta.http-equiv.X-UA-Compatible.elem =
  element meta { meta.inner & meta.http-equiv.X-UA-Compatible.attrs }
  meta.http-equiv.X-UA-Compatible.attrs =
    ( common.attrs.basic
      & common.attrs.i18n
      & common.attrs.present
      & common.attrs.other
      & meta.http-equiv.attrs.http-equiv.X-UA-Compatible
      & meta.http-equiv.attrs.content.X-UA-Compatible
      & ( common.attrs.aria.role.presentation
        | common.attrs.aria.role.menuitem
        )?
    )
    meta.http-equiv.attrs.http-equiv.X-UA-Compatible = attribute http-equiv {
      xsd:string {
        pattern = "X-UA-Compatible"
      }
    }
    meta.http-equiv.attrs.content.X-UA-Compatible = attribute content {
      xsd:string {
        pattern = "IE=((edge)|(EmulateIE(7|8|9|10))|7|8|9|10|11)(,chrome=(1|0))?"
      }
    }

common.elem.metadata |= meta.http-equiv.X-UA-Compatible.elem

,chrome=1제대로 작동하는 메타 태그에서 제거하십시오 . 유효성 검사기 :

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

나는 똑같은 문제를 겪었고 그 라인을 추가하고 둘러싼 것이 상황을 해결했습니다.

<!--[if IE]><meta http-equiv="x-ua-compatible" content="IE=9" /><![endif]-->

참고URL : https://stackoverflow.com/questions/14198594/bad-value-x-ua-compatible-for-attribute-http-equiv-on-element-meta

반응형