2014-03-26 2 views
-1

내 코드에 < " 등으로 대체되는 HTML 기호를 방지하는 방법은 내가 아약스를 통해이 스크립트를로드하고 나는 그것을 실행하려는자바 스크립트.

var button = document.createElement('a'); 
button.innerHTML = '<div class="some_class"><div>Download</div><div class="quality">'+ element[1] +' ('+ element[2] + 'ГБ)</div></div>'; 

입니다. 그러나 브라우저로드합니다 같은 :

물론 구문 오류가 발생
button.innerHTML = '&lt;divclass=&quot;some_class&quot;&gt;&lt;div&gt;Download&lt;/div&gt;&lt;div class=&quot;quality&quot;&gt;'+ element[1] +' ('+ element[2] + 'ГБ)&lt;/div&gt;&lt;/div&gt;' 

.

문제를 해결하는 방법은 무엇입니까?

편집 : 직접 페이지로 이동하면 http://myserver.com/script.js - 제대로 작동합니다. 하지만 아약스를 다음과 같이로드하는 경우 :

$.ajax({url: "http://myserver.com/script.js?url=" + 
location.href, dataType: "script"}); 

HTMLEncoded를 가져옵니다.

+0

이 문제는 해결되지 않지만 왜'div'를'a' 요소 안에 넣을까요? 매우 드물다. 그리고 왜 당신은'a' 요소를'button '이라고 부릅니까? 코드가 읽기 쉽고 직설적이어야한다고 생각하지 않습니까? – ElmoVanKielmo

+0

@Mikhail 여러분의 가치가 HTMLEncoded을 얻는 곳이 어디인지는 확실치 않습니다. 정말 "문제"의 경로입니다. (아마 보안상의 이유로 그것을하고있다). 하지만 당신이 게시 한 코드는 실제 문제를 보여주지 않기 때문에 액면 그대로 받아 들여질 것입니다 ... http://jsfiddle.net/6kYP9/ –

+0

@StephenJames 몇 가지 설명을 추가했습니다. 좀 봐 주시겠습니까? –

답변

0

var replaceStrings = { 
"&": "&amp;", 
"<": "&lt;", 
">": "&gt;", 
'"': '&quot;', 
"'": '&#39;', 
"/": '&#x2F;' 


}; 

    function escapeHtmlCharacters(string) { 
    return String(string).replace(/[&<>"'\/]/g, function (str) { 
     return replaceStrings[str]; 
    }); 

}

또는 당신은 변환이 적용되는 곳을 찾을 필요가 단순히

html.replace(/&/g, '&amp;') 
        .replace(/>/g, '&gt;') 
        .replace(/</g, '&lt;') 
        .replace(/"/g, '&quot;') 
        .replace(/'/g, '&apos;'); 
1

을보십시오. 서버 측 또는 아약스 라이브러리 일 수 있습니다. 브라우저 개발자 도구에서 '네트워크'페이지를 살펴 보길 권한다. 서버에서 정확히 무엇을 얻을 수 있는지 확인할 수 있습니다.

0

해결되었습니다. 덕분에.

.htmlsafe 메서드를 Rails 뷰에 추가했습니다.

관련 문제