2010-01-30 4 views
2

는 < NOSCRIPT의 차이는> 페이지에 대한 블록 처리가 MIME 타입 응용 프로그램/XHTML + XML와 함께 제공하는 대 MIME 타입 text/html과와 함께 제공 있습니까?<noscript> 처리

까지 제가 알 수 있듯이 에 대한 < noscript> 블록에 대한 JavaScript는 브라우저에서 JavaScript가 비활성화되어 있으면 페이지가 처리되지 않습니다. application/xhtml + xml 페이지는 어떻게됩니까? 나는 자바 스크립트가 비활성화되었을 때 블록이 여전히 분석된다는 것을 의심한다. 하지만이 문제에 대한 설명을 찾지 못했습니다.

누군가 적절한 W3C 표준을 가르키거나 다른 설명을 제공 할 수 있습니까?

추신. 관심있는 상황은 방문자가 방문한 JS를 추적하기 위해 < noscript> 차단을 사용하는 방문 서비스입니다. < NOSCRIPT 요소 (예를 들어, 제로 크기의 이미지가)> 블록이 후 어떤 경우에 다운로드하는 경우 이러한 서비스는

답변

4

:(돌파해야 가장 좋은 설명은 아마 여기에 HTML5 초안의 하나입니다. http://dev.w3.org/html5/spec/semantics.html#the-noscript-element

... text/html과에서

가 발생 정확하게의 세부 사항은 매우 복잡하지 않습니다 그냥 위의 링크를 따라 여기에 재현의 어떤 점 응용 프로그램/XHTML + XML의

, 초안은 말합니다 :

noscript 요소는 사용하지 않아야합니다. XML 문서에서.

noscript 요소는 HTML 구문에서만 유효하며 XHTML 구문에는 효과가 없습니다.

그래서 application/xhtml + xml에서 스크립팅을 사용할 수 있는지 여부에 관계없이 noscript의 내용을 표시해야합니다. 물론 스크립팅이 활성화 된 경우 스크립트를 사용하여 DOM에서 이러한 요소를 제거하는 것은 매우 간단합니다.

교정.

위의 인용문이 의미하는 바는 noscript 요소가을 구문 분석 할 때 에 영향을 미치지 않는다는 것입니다. XHTML의 섹션에서

여기, http://dev.w3.org/html5/spec/the-xhtml-syntax.html#the-xhtml-syntax는 초안

는 사용자 에이전트에 관계없이 CSS 규칙, 스크립트가 활성화되어 누구를 위해 NOSCRIPT 요소를 숨기 것으로 예상했다.

그렇다면 스크립팅을 사용할 때 noscript 요소는 내용을 숨 깁니다. 그러나 그게 전부이며, 어쨌든 이미지가로드됩니다. 또한, 이것을 시도 :

<html xml:lang="en-GB" xmlns="http://www.w3.org/1999/xhtml" lang="en-GB"> 
    <head> 
    <title>Test</title> 
    </head> 
    <body> 
    <p>Test 1</p> 
    <noscript id="ns"> 
     <p>Test 2</p> 
     <script type="text/javascript"> 
     document.getElementById("ns").parentNode.removeChild(document.getElementById("ns")); 
     </script> 
     <img src="test.gif" alt="test"/> 
    </noscript> 
    </body> 
</html> 

그리고 noscript 노드가 dom에서 제거되었지만 Firefox는 여전히 이미지를로드하려고했습니다.

+0

HTML5 doctype을 사용하지 않고 XHTML 1.1을 사용하고 있습니다.나는 그것이 차이를 만드는 것 같지 않니? 내가 틀렸다면 나를 바로 잡아주세요. 약간의 실험을 해본 결과, JS가 비활성화되었지만 아직로드 된 경우 noscript의 내용이 application/xhtml + xml에 표시되지 않는다고 주장 할 수 있습니다 (해당 http 요청/응답 있음). XML 문서를 처리 할 때 모든 최신 브라우저가 표준을 따르지 않습니까? DOM에서 noscript (또는 해당 내용)를 제거하면 (JS가 사용 가능할 때) 내용이 제거되기 전에로드됩니까? –

+0

doctype은 전혀 차이가 없습니다. 하지만 위의 수정을 참조하십시오. – Alohci

+0

신속하고 편리한 예제로 답해 주셔서 감사합니다. 조금 더 추가하려면 http://wiki.whatwg.org/wiki/HTML_vs._XHTML에서 다음을 찾았습니다 (실제로는 답변과 동일하지만 증명 링크 없음) : "HTML의 경우 if 스크립팅을 사용하면 noscript 요소는 CDATA 요소로 파싱됩니다. 스크립팅을 사용하지 않으면 일반 요소로 구문 분석됩니다 .XHTML에서 요소는 항상 일반 요소로 파싱됩니다. <..> " –