2013-07-16 3 views
0

안녕하세요 저는 특수 문자가있는 제목을 전달하는 앵커 링크에서 호출되는 JavaScript 함수를 사용하고 있습니다. 함수에 전달 된 문자열에서 작은 따옴표를 어떻게 이스케이프 처리 할 수 ​​있습니까? 샘플 문자열이 아래와 같습니다Javascript 특수 이스케이프 문자

, 그것은 그 문자를 탈출하지 이후 너무 기능 getdata가 호출되지 않습니다

string desc="test's/test2'w"; 

샘플 링크 HTML

"<a href="javascript:getdata(\'' + desc+ '\',);void(0);">TEST</a>" 

.

그것의 당신은 모든 HTML 엔티티의 이름을 모르는 경우 나 HTML만을

+0

나는 HTML이 자바 스크립트 문자열에 있다고 가정합니다. –

+0

href 액션에서 js 함수 호출을 사용하는 앵커 링크 없음 – Selwyn

답변

0

와 함께 작동하도록해야합니다 레거시 시스템, 당신은 여전히 ​​HTML 그들에게

function htmlEncode(str) { 
    return str.replace(/[^\da-z()\[\] .,\/\\]/g, function (m) { 
     return '&#' + m.charCodeAt(0) + ';'; 
    }); 
} 
htmlEncode("test's/test2'w"); // "test&#39;s/test2&#39;w" 
를 인코딩 할 수 있습니다

여기서 \da-z()\[\] .,\/\\은 허용되는 문자의 흰색 목록입니다.

당신이 문자열으로 HTML을 생성 할 경우,이 괜찮지 만, 새로운 DOM 요소를 확인하려면 Quentinanswer는 장기적으로 훨씬 낫다.

4

문자열을 함께 스매싱하여 HTML을 생성하지 마십시오. DOM을 사용하십시오. 자바 스크립트 URI를 사용하지 말고, 이벤트 핸들러를 사용하십시오.

var desc = "test's/test2'w"; 
var link = document.createElement('a'); 
link.appendChild(document.createTextNode('TEST')); 
link.href = "fallback.html"; 
link.addEventListener('click', function (evt) { 
    getData(desc); 
    evt.preventDefault(); 
}); 
document.body.appendChild(link); 
+0

감사합니다! 마지막으로 js에서 html을 엉키지 않게하는 사람. – Zirak

관련 문제