2012-02-22 3 views
1

나는이 질문의 제목이 정확하지 않을 수도 있다는 것을 알고 있지만 나는 XSLT에서 자바에서 문자를 정리하는 것과 같은 것을 어떻게 사용할 수 있는지 궁금했다. 예를 들어 특정 정보를 추출하는 데 사용하는 JSON이 있는데 그 중 하나는 호텔 이름입니다. 문제는 조지의 호텔과 같이 이름에 아포스트로피가있는 호텔입니다. Chrome이나 Firefox에서 이것을 표시하면 IE8에서는 괜찮습니다. george's을 제공합니다.자바 스크립트에서 출력 이스케이프를 비활성화 할 수 있습니까?

내 코드는 다음과 같습니다

var hotel_title = j.data.hotels[i].title 

필자가 시도 :

var zz = escape(hotel_title); 

어떤 도움을 주시면 감사하겠습니다.

+1

(이 작업을 수행해야합니다). 이 정보가 없으면 질문에 올바르게 답변하기가 어렵습니다. – ThiefMaster

+1

JSON 데이터에'''대신'''이 있습니까? 그렇다면 원본에서 문제를 해결해야합니다 (JSON에는 텍스트가 아닌 XML 조각 ('''은 HTML 구조가 아닌 XML 구조입니다). – Quentin

+0

@ThiefMaster & Quentin - 주석/의견을 주셔서 감사합니다. JSON 파일에서 문제를 해결할 수 있음을 알았습니다. (havent는 아직 시도했지만) JSON API를 받았고 그면을 제어 할 수 없다면 어떻게 될까요? 사물의? – Hatzi

답변

2

어느 것 :

  • 문서가 HTML입니다

    크롬과 파이어 폭스가 ' 때와 같이 '를 렌더링함으로써 도움이 될하려고

    그들은 안된다 ('은 XML이기 때문에이고 따라서 XHTML — HTML이 아니지만 실제로는 혼란 스럽습니다. IE는 엔터티를 '으로 바꾸지 않아도 제대로 작동합니다.

또는 :

  • 문서가 XHTML

    IE가 제대로이 감지되지 않았 음을, 그리고, 따라서 '로 엔티티를 대체하지 않습니다.


    당신의 두 가지 가능한 솔루션

은 다음과 같습니다

  • 명시 적으로 HTML하지, XHTML로 문서를 설정

    (나이가 IE를 지원하려는 경우에 적합하지 않음)

  • 송신 중지소스에서 데이터에 210; 대신 '을 JSON에 작성하십시오.

    당신은 문자열과 방법 JSON의 모양을 표시하는 코드를 보여줄 필요가

+0

문서를 XHTML로 명시 적으로 설정한다는 것은'application/xhtml + xml' 콘텐츠 유형으로 서비스를 제공한다는 것을 의미합니다. 그러면 이전 버전의 IE가 전혀 렌더링을 거부합니다. – Quentin

+0

@Quentin : OK, 그래서 그것은 열등한 해결책입니다. 그러나 우리는 OP의 브라우저 요구 사항을 알지 못합니다. –

+0

궤도의 @ Lightness Races - 댓글을 주셔서 감사합니다. 적어도 운좋게도, 나는 JSON에 액세스 할 수 있습니다. Javascript의 간단한 솔루션이되기를 바랍니다. – Hatzi

0

JSON의 문자열이 이미 html로 인코딩 되었습니까? 그렇다면 어떤 객체의 속성 인 innerHTML에 할당해야합니다. 그렇지 않은 경우 innerText에 할당하십시오.

+0

아니요. '''은 HTML이 아닌 XML 인코딩을 나타냅니다. HTML에는 '''이 없습니다. – Quentin

+1

JSON을 생성 할 때 xml 이스케이프 함수를 사용하고있을 수도 있습니다. – ThiefMaster

-2

하나의 간단한 해결책은

var elt = document.createElement("div"); 
elt.innerHTML = yourString; 
unescapedString = elt.textContent; 
+1

아니요. '''은 HTML 엔터티가 아니기 때문에 IE에서는 처음에 "틀린"것으로 렌더링되고 있습니다. – Quentin

+0

@Quentin : 유효한 응답을 하향 투표하기 전에 Chrome 개발자 도구 (Chrome의 모든 페이지에서 'Ctrl-Shift-J')에서이 코드를 실행하는 것이 좋습니다. –

+1

"Chrome이나 Firefox에서 이것을 표시하면 IE8에서는 잘 작동하지만 ..."라는 질문에서. Chrome은 '''-in-html 오류를 사용하여 복구되므로 Chrome 개발자 도구에서 해당 코드를 실행해도 아무런 문제가 없습니다. – Quentin

관련 문제