2013-07-13 7 views
14

Burada bir jsfiddle var - http://jsfiddle.net/stevea/QpNbu/3/ - class='active' olan tüm öğeler için outerHTML toplar.outerHTML neden <!-​- --> yorum getiriyor?

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

outerHTML hala geri getiriyor: Ne beni şaşırtıyor ben gibi bazı HTML, açıklama dahi olmasıdır! Bu hala DOM'da olamaz, bu yüzden outerHTML'un nereye baktığını merak ediyorum.

Herhangi bir fikir için teşekkürler.

+2

innerHTML aynı şeyi yapacak – smerny

cevap

18

Yorumlar, gerçekte DOM'ın bir parçası olan şaşırtıcı bir şekilde şeklindedir. Burada bu ekran görüntüsündeki bakarsak:

web inspector

Sen (google chrome web denetleyicisi DOM parçası olarak vermektedir göreceğiniz alt bar da div#box1.active bir çocuk olarak bunu nasıl gösterdiğine dikkat edin.) Daha somut belgeler için on MDN DOM düğümleri için olası Node.nodeType10 s'ye bakarsanız, COMMENT_NODE öğesinin geçerli türlerden biri olduğunu görürsünüz. yani bütün karakterler,

Bu arayüz characterData devraldığı ve bir yorumun içeriği temsil:

COMMENT_NODE 8

W3 da DOM için Yorum arayüzünü tanımlar başlangıçta '<! -' ile biten '->' arasında. Bazı HTML araçlarının tam SGML yorum yapısını uygulayabilmesine rağmen, bunun XML'de ve pratikte HTML'deki bir yorumun tanımı olduğunu unutmayın.

+3

Şaşırtıcı şekilde? Bunları ihmal ederse belgenin tam bir modeli olmazdı. –

+0

@ChrisMorgan Benim kötü, sabit – Zhanger

+2

Benim için şaşırtıcıydı ve görünüşe göre cevabın aldığı tüm oylardan yola çıkarak bir çok başka insana. – Steve

2

HTML yorumları DOM'ın bir parçasıdır, onlar sadece tarayıcı tarafından göz ardı edilir.

+0

Bu biraz çelişkili - tarayıcı DOM'ı yapılandırır; DOM’dalarsa, tarayıcı tarafından göz ardı edilmediler. – icktoofay

+2

"Ekran için * tarayıcı tarafından yok sayılsın" demek istediğimi farz ediyorum. –

+0

@ChrisMorgan Ben kastettim. Cevabı güncelledim. –