2010-11-22 2 views
3

누군가 이상하게 도울 수 있습니다. 여기에 빠른 테스트 기능입니다 :innerHTML 이미지 태그에서 닫는 슬래시 제거

function test_function(){ 
    code = '<img src="http://www.myimage.com/img.jpg" alt="image" />'; 
    alert(code); 
    document.getElementById('test').innerHTML = code; 
    alert(document.getElementById('test').innerHTML); 
} 

위의 코드를 실행하는 첫 번째 경고에 /> 표시됩니다,하지만 두 번째 경고, 그냥 > 표시하지 않습니다. 따라서 .innerHTML에 적용하면 슬래시가 제거됩니다. 어떤 아이디어가 이런 일을 막을 수 있을까요? 검증을 위해 슬래시가 필요합니다.

+1

어떤 doctype을 사용하십니까? – Dror

+0

어떤 브라우저를 사용하고 계십니까? – JAL

+0

브라우저가 슬래시를 제거하면 해당 doctype에서 필요하지 않을 가능성이 있습니다. –

답변

6

두 번째 경고는 브라우저가 이미지 요소의 내부 표현으로 사용하는 것을 보여줍니다. 유효성 검사는 항상 페이지의 소스에 관한 것이므로 유효성 검사기는 DOM에 요소를 동적으로 추가하는 JavaScript를 실행하지 않으므로 유효성 검사에 슬래시가 필요하지 않습니다.

실제로 대부분의 브라우저는 내부적으로 XHTML을 HTML과 동일하게 처리하며 문서의 XML 표현이 아닙니다. MIME 유형이 application/xhtml+xml 인 XHTML 문서를 보낼 때만 브라우저 중 일부는 XML 파서를 사용하여 페이지를 렌더링합니다.

Ian Hickson의 article도 참조하십시오.

+0

innerHTML과 같은 것들을 사용하여 페이지 소스를 아약스 페이지 편집기에 저장하지 않는 한 그게 전부입니다. – David

+0

맞아요. 마임을 사용하면 일부 브라우저에서 작동합니다. 확실한 불이 필요하고 그 마임을 사용하여 온라인으로 다른 어떤 것도 찾을 수 없습니다. – David

+0

@David - HTML 5로 전환 할 수 없습니까? [자기 닫는 태그] (http://dev.w3.org/html5/spec/Overview.html#elements-0)를 사용하지 않으면 훨씬 용서가됩니다. –