2012-06-06 2 views
0

업데이트 :이 문제는 자체 코딩 오류로 인한 것이므로 실제로 닫지 않아야합니다.Internet Explorer 8의 선행 공백 및 앵커 태그가있는 jQuery.html()

내부에 선행 공백과 앵커 태그가있는 경우 IE8 및 jQuery.html()에 문제가 있습니다. 문제를 재현하려면 여기 :

http://jquery.com/ 

는 이제 IE8 개발자 콘솔에이를 입력 :

$('body').html(' test<a href="">foo<a>'); 

당신은 화면에 아무 것도 인쇄되지됩니다 알 수 있습니다. 콘솔이를 입력하면 신체의 내용이 비어 있는지 확인합니다 :

$('body').html(); 

내가 네이티브 innerHTML을 사용하는 경우이 문제가 발생하지 않습니다. jQuery는 IE8의 기본 innerHTML을 우회하고 대신 IE8이 선행 공백을 제거하기 때문에 jQuery.append()를 사용합니다.

왜 이런 일이 발생하는지 알고 계십니까? 이것은 알려진 버그입니까?

+0

왜 공백이 너무 중요한가요? 그것은 당신이 아는 것을 아무것도하지 않습니다 ... – gdoron

+0

그것은 버그 일 것 같습니다. – j08691

+1

IE에서이 코드를 테스트 해 볼 필요는 없지만 코드 라인은 다음과 같습니다. https://github.com/jquery/jquery/blob/master/src/support.js#L36 https://github.com/jquery/jquery/blob/master/src/manipulation.js#L226 – noob

답변

3

귀하의 마크 업, 당신이 그것을 닫으면 작동, 내가 jQuery를 여기에 불구하고 유효하지 않은 마크 업을 처리하는 방법을 모르는

$('body').html(' test<a href="">foo</a>'); 

무효이므로 아직 버그가 있습니다.

+1

잘못된 마크 업에서 정의되지 않은 동작은 다음과 같이 간주 될 수 있습니다. 버그. 쓰레기 입력, 쓰레기 출력. –

+0

와우, 고마워. 그것은 내 부분에 대한 엄청난 감독이었다. 다른 사람에게 유용하지 않기 때문에 질문을 삭제하겠습니다. –

+0

@ JohnnyO, 또는 너무 현지화 된 상태로 닫을 수 있습니다. 실수 한 사람을 도울 수 있습니다. 너의 선택. –

관련 문제