2013-03-30 2 views
1

.html 중에서에 HTML을 탈출 구문 분석하지 않습니다. 그러나 상자를 클릭하면 JavaScript가 실행됩니다.jQuery를 예를 들어이 HTML을 가지고() 메소드

.html에서 .text으로 변경하면 문자 그대로 줄 바꿈도 표시됩니다.

<br>을 줄 바꿈으로 표시 할 수있는 방법은 무엇입니까? &lt;&gt;은 상자를 클릭 할 때 글자의 크기보다 작고 글자가 큼을 나타냅니다.

+0

이 코드는 무엇을하기로되어 있습니까? 다른 JavaScript에서 JavaScript를 출력하려고하는 이유는 무엇입니까? – woz

+0

@woz 나는 폼 입력을 해킹하는 사람의 사례라고 생각한다. – Dave

+0

td의 내용을 클릭하면 (onclick = "$ (this)) .html (''...). 그 점을 이해하고 있습니다. 다른 JavaScript에서 JavaScript를 출력하지 않습니다. - 그게 현재하고있는 것입니다 – stackunderflow

답변

3

JavaScript 기능에 도달하기 전에 문자가 onclick으로 디코딩되고 있다는 문제가 있습니다.

두 번 인코딩해야합니다. 그래서 예는 될 것입니다 : 내가 태그를 (단일 인코딩)을 인코딩

<td onclick="$(this).html('Wanted HTML: &lt;br&gt;; Unwanted HTML: &amp;lt;script&amp;gt;alert(&amp;#39;xss&amp;#39;)&amp;lt;/script&amp;gt;')"> 
    Click to Show 
</td> 

공지 사항 당신이이 원하는 할 . 또한 첫 번째 &gt;에 누락 된 세미콜론을 추가했습니다.

더 좋은 해결책은 HTML에서 이것을 완전히 제거하는 것입니다. 대부분의 개발자는 JavaScript가 상호 작용을 위해 사용되고 HTML은 콘텐츠를위한 것이라는 점에 동의하며 가능한 한 많이 혼합해야합니다 (addEventHandler과 같은 호출로 콘텐츠에 JavaScript를 연결)

+0

고마워요, 그게 효과가 있어요 :) – stackunderflow

+0

예제는 축약되었습니다 - 실제로 이것을 사용하는 방식은 TD에 많은 양의 텍스트를 포함하고 있으므로 단축하고 전체 메시지로 확장 할 수 있습니다. – stackunderflow

+0

@DuncanNZ 그러면 더 나은 (또는 적어도 더 순수한) 해결책은 전체 내용으로 숨겨진 div를 갖는 것입니다. 지정된 영역에 대해 긴 div에 대해 짧은 div를 교체하는 일반적인 JavaScript 함수 – Dave