[javascript] </ body> 태그 뒤에 <script> 태그를 배치하는 것이 잘못 되었습니까?

본문 ( </body>) 의 닫는 태그 뒤에 스크립트 태그를 배치하는 것이 얼마나 잘못입니까 ? ?

<html>
  ....
  <body>
     ....
  </body>
  <script type="text/javascript" src="theJs.js"></script>
</html>



답변

또는 태그 외부 에서는 유효성을 검사 하지 않습니다 . 또한 body 요소가 완전히로드되기 전에 IE중단 시킬 수있는 DOM 조작을하지 않는 한 닫는 직전에 배치하는 데 큰 차이가 없습니다 .<body><head></body>

<html>
  ....
  <body>
     ....
     <script type="text/javascript" src="theJs.js"></script>
  </body>
</html>


답변

예. 본문의 종료 태그 뒤에는 html 요소의 주석과 종료 태그 만 허용됩니다.

브라우저는 오류 복구를 수행 할 수 있지만 그에 의존해서는 안됩니다.


답변

앤디는 문서가 유효하지만, 그럼에도 불구하고 스크립트가 여전히 해석됩니다하지 것이라고 말했다. 예를 들어 WebKit 의 스 니펫 을 참조하십시오 .

void HTMLParser::processCloseTag(Token* t)
{
    // Support for really broken html.
    // we never close the body tag, since some stupid web pages close it before 
    // the actual end of the doc.
    // let's rely on the end() call to close things.
    if (t->tagName == htmlTag || t->tagName == bodyTag
                              || t->tagName == commentAtom)
        return;
    ...


답변

IE는 더 이상 이것을 허용하지 않으며 (버전 10 이후) 그런 스크립트를 무시합니다. FF와 Chrome은 여전히 ​​허용하지만, 언젠가는 이것을 비표준으로 떨어 뜨릴 가능성이 있습니다.


답변

W3C의 권장 프로세스에서 “element body”가 “parse error”인 경우 절차 적으로 “element script”를 삽입하십시오 . “트리 구성”에서 오류를 생성하고 “다시 토큰 화”를 실행하여 해당 컨텐츠를 처리하십시오. 추가 단계와 같습니다. 그런 다음에 만 “스크립트 실행”을 실행할 수 있습니다 . 스키마 프로세스를 참조하십시오 .

“구문 분석 오류”가 있습니다. “삽입 모드”를 “본문”으로 전환하고 토큰을 다시 처리하십시오.

기술적으로 브라우저를 통해 내부 프로세스, 표시 및 최적화 방법.

나는 누군가를 도왔기를 바랍니다.


답변

예. 그러나 외부에 코드를 추가하면 대부분의 브라우저가 코드를 수정하므로 세계의 종말이 아닐 가능성이 있지만 여전히 들어가는 것은 나쁜 습관입니다.


답변

실제로 ‘CSS 최적화’와 관련하여 권장합니다. 중요한 인라인 스타일을 인라인하고 나머지 파일 (css 파일)을 연기하는 것이 좋습니다.

예:

<html>
  <head>
    <style>
      .blue{color:blue;}
    </style>
    </head>
  <body>
    <div class="blue">
      Hello, world!
    </div>
  </body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>

참조 : https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery