2013-07-13 5 views
14

여기서 class='active' 인 모든 요소에 대해 outerHTML을 수집하는 http://jsfiddle.net/stevea/QpNbu/3/ -이 jsfiddle입니다.outerHTML이 <!-​- --> 개의 의견을 다시 가져 오는 이유는 무엇입니까?

<!--  <div>'Some inner text'</div> --> 

outerHTML 아직도 찾아온다 : 어떤 날 놀라게하는 것은 내가에서와 같이 HTML의 일부를 주석 경우에도 있다는 것입니다! 이것은 여전히 ​​DOM에있을 수 없기 때문에 outerHTML이 어디에 있는지 궁금하네요.

어떤 통찰력에도 감사드립니다.

+2

innerHTML도 같은 일을합니다 – smerny

답변

18

HTML의 설명은 이며 놀랍게도입니다. 사실 DOM의 일부입니다! 여기이 스크린 샷을 보면 :

web inspector

당신은 (구글 크롬 웹 관리자는 DOM의 일부로 렌더링 볼 수 아래 줄뿐만 아니라 div#box1.active의 자식으로 표시하는 방법을 알 수 있습니다.)

보다 구체적인 문서를 들어, DOM에 사용할 수있는 Node.nodeType의를 보면 당신은 COMMENT_NODE이 유효한 유형 중 하나입니다 것을 볼 수 있습니다, on MDN 노드. 즉, 모든 문자,

이 인터페이스는 CharacterData를 상속 해, 코멘트의 내용을 나타냅니다

COMMENT_NODE 8

W3 또한 DOM에 대한 코멘트 인터페이스를 정의 시작 '<! -'과 끝 '->'사이에 있습니다. 일부 HTML 도구가 전체 SGML 주석 구조를 구현할 수도 있지만, 이것은 XML 및 실제 HTML의 주석 정의입니다.

+3

놀랍습니까? 문서를 생략하면 완전한 모델이 될 수 없습니다. –

+0

@ChrisMorgan 내 나쁜, 고정 – Zhanger

+2

그것은 나에게 놀라운 일이었고, 분명히 많은 사람들에게 대답은 모든 upvotes에서 판단했다. – Steve

2

HTML 주석은 DOM의 일부이며, 표시를 위해 브라우저에서 무시됩니다.

+0

다소 모순이 있습니다. 브라우저가 DOM을 구성합니다. DOM에 있다면 브라우저에서 무시하지 않는 것이 분명합니다. – icktoofay

+2

나는 "브라우저 *에서 표시 *를 무시합니다."라고 생각합니다. –

+0

@ChrisMorgan 그것이 내가 의미했던 것입니다. 답변을 업데이트했습니다. –