2009-12-31 2 views
0

이것을 IEIE javascript html 인코딩 괴괴 망측

javascript:location.href='http://www.google.com/search?q=something&lt=bar' 

의 위치 표시 줄에 넣으십시오. &lt이 실제로 &lt;를 의미하고 <로 만드는 것은 도움이됩니다.

WTF가 여기에 있습니까?

다른 브라우저는 이것을하지 않습니다. 어떻게 IE가 이것을 막지 못하나요?

+0

IE가 죽어야합니다. Atleast, IE6해야합니다. – jrharshath

답변

1

HTML 문서의 일부이므로 &을 & amp으로 바꿔야합니다.

HTML 표시의 앰퍼샌드 '&'& lt와 같은 문자 참조 엔터티의 시작. & gt; 및 &acute;

문서의 리터럴 앰퍼샌드는 & amp;

해당 코드가 동적으로 생성되는 경우 JavaScript 문자열에도 나타날 수 있도록 URL을 이스케이프 처리해야합니다.

편집 됨 :이 특정 문제는 주소 표시 줄에 직접 JavaScript 코드를 붙여 넣을 때 발생합니다. 그것은 HTML 문자 이스케이프 규칙은 결국 여기에 상관없는 것 같습니다.

나는 조금 봤 거든이 blog post 즉 버그로 식별 특정 동작을 발견했습니다.

+0

이것은 위치 표시 줄에서 javascript를 실행하는 경우에도 발생합니다. .js 파일에서 함수를 참조 할 때도 발생합니다. 이렇게하면 자바 스크립트 문자열이 인코딩 될 것으로 기대하지 않는 다른 모든 브라우저가 손상 될 수 있습니다. (그것은 크롬과 파이어 폭스를 확실히 깨뜨린다 - 오페라에 대해 확실하지 않다) –

+1

@HS 네가 맞다. 나는이 블로그 포스트가 ie 버그처럼 보이는 것에 대해 알게되었다. http://nedbatchelder.com/blog/200812/accidental_html_entities_in_urls.html –

+0

좋은 발견. 나는 인터넷 검색을 시도했지만 어떤 키워드를 사용해야할지 몰랐습니다. 쿼리 문자열을 재정렬하면이 문제가 해결됩니다. 감사. 나는이 답을 '정확함'으로 표시 할 것입니다. -이 링크를 추가하려면 게시물을 편집하십시오. –