2011-02-15 6 views
0

는 내가이 같은 서버 측에서 동적으로 onlick 이벤트를 설정하는 내 UserControl을에 하이퍼 링크가 속성 :안 HTML 인코딩

this.Attributes["onclick"] = string.Format("javascript:alert('{0}')", base.NavigateUrl); 

문제가 Asp.net 렌더링 할 때 페이지가 끝나면 다음과 같이 끝납니다.

<a href='...' onclick="javascript:alert(&#39;TEST&#39;)>LINK</a> 

분명히 유효하지 않은 자바 스크립트입니다. ' 대신 "을 사용하면 도움이되지 않습니다. 생성 된 HTML은 alert(&quot;TEST&quot;)입니다.

이 방법이 있습니까?

감사합니다.

답변

3

onclick="javascript:alert(&#39;TEST&#39;)"은 완벽하게 유효합니다. 페이지가 구문 분석 될 때 엔티티는 JavaScript가 값을 처리하기 전에 해당 항목으로 바꿔야합니다. 따라서 패스 1에서 HTML 파서는 속성 값을 유효한 JavaScript 인 javascript:alert('TEST');으로 변경합니다.

+0

고맙습니다. HTML을 직접 검사했습니다. – 0xFF

1

Jquery를 사용할 때 작동하지 않습니다.

서버 측 :

this.Attributes["onclick"] = "$('#button').click();"; 

클라이언트 측 :

onclick="$(&amp;#39;#button&amp;#39;).click();" gives an error. 

은 얻을 '진짜'작은 따옴표 클라이언트 측에 어쨌든이 있나요?

0

royu,

불행하게도, Microsoft는이이 "보안 기능"이며, 그들이 진짜로 브라우저 또는 자바 스크립트 호환성을 걱정하지 않는다 생각합니다. 이것을 무시하는 한 가지 방법은 일반 텍스트 대신 Eval ([string])을 사용하는 것입니다. 이 경우 값을 인코딩해서는 안됩니다.