0

JQuery는 carrige return 및 new line 문자를 IE7 및 IE8에서 새로 생성 된 JQuery 요소의 시작 부분에 추가합니다. 무슨 일 이니? IE8 또는 IE7에서 실행될 때 출력에jquery가 IE7 및 IE8에서 새로 만든 요소에 CR-LF를 추가하는 이유는 무엇입니까?

var myDiv = $('<div>'); 
alert('myDiv[0].outerHTML="' + myDiv[0].outerHTML + '"'); 

결과 : 다음과 같이 JQuery와 버전 1.9.1을 사용하여

" 
myDiv[0].outerHTML=<div></div>" 

당신이 jsbin sample에 repro 수 있지만, 사용하는 기억 IE8 또는 IE7 모드.

답변

2

jquery와 관련이 없으므로 말씀 드릴 수 있습니다. 그것은 기본 JS 엔진이며 어떻게 처리합니까. 내 생각 엔 outerHTML 제품은 HTML 조각이고 IE7/8은 줄 바꿈이있는 제품을 만듭니다. 태그 사이의 공백은 사양에 따라 문서 흐름에 고려되지 않으므로 HTML이 실제로 생성되는 방식 (즉, 해당 새 줄 바꿈이 있거나 없음). 태그 들여 쓰기 등의 여부에 관계없이 실제로는 각 브라우저에서 지정해야합니다.

http://jsbin.com/izemop/1/ 실제 문서에 있고 DOM의 getElementById에 의해받은 div를 사용하는이 예제를 참조하십시오. 당신은 같은 결과를 얻습니다.

+0

이 나타납니다. 'getElementById'와 좋은 점. – johntrepreneur

+0

+1 멋진 정보;) –

2

자바 스크립트 엔진과 관련 있습니다. 필요한 경우 간단한 해결 방법으로 $ .trim() 함수를 사용할 수 있습니다.

var myDiv = $('<div/>'); 
alert('myDiv[0].outerHTML="' + $.trim(myDiv[0].outerHTML) + '"'); 
+0

+1 문제에 대한 해결 방법 제공. –