Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Simply Lift : Chapter 19 - Embedding JavaScript in an HTML page

원문 : http://simply.liftweb.net/index-Chapter-19.html#toc-Chapter-19


19장
HTML 페이지에서 JavaScript 내장하기 (Embedding JavaScript in an HTML page)




19.1 문제점

제가 무엇을 잘못했습니까? 페이지안에 javascript 오브젝트를 출력하려고 노력하고 있지만(저의 프론트앤드 가이는 id로 엘리먼트를 파싱하지 않고 데이터를 가지고 뭔가를 할수 있도록) 모든 쌍따옴표를 "로 대체해버립니다.(오직 소스를 볼때만 - 그것들을 검사하면 firebug는 그것들은 쌍따움표로 다시 변환해버립니다.)

Exploring Lift에서 예제를 복사했지만 이것 역시 동일합니다:

& ".data_as_object *" #> {
   JsCrVar("myObject", JsObj(("persons", JsArray(
      JsObj(("name", "Thor"), ("race", "Asgard")),
      JsObj(("name", "Todd"), ("race", "Wraith")),
      JsObj(("name", "Rodney"), ("race", "Human"))
   ))))

다음과 같이 됩니다:

<div class="data_as_object" style="display: none;">var myObject =
{&quot;persons&quot;: [{&quot;name&quot;: &quot;Thor&quot;,
&quot;race&quot;: &quot;Asgard&quot;}, {&quot;name&quot;:
&quot;Todd&quot;, &quot;race&quot;: &quot;Wraith&quot;},
{&quot;name&quot;: &quot;Rodney&quot;, &quot;race&quot;:
&quot;Human&quot;}]
};</div>

저는 제가 출력한 것이 문자열이 아니라 숫자라면 괜찮다는 것을 알아차렸습니다.




19.2 해결책

다음을 시도해 보세요:

& ".data_as_object *" #> {
   Script(JsCrVar("myObject", JsObj(("persons", JsArray(
      JsObj(("name", "Thor"), ("race", "Asgard")),
      JsObj(("name", "Todd"), ("race", "Wraith")),
      JsObj(("name", "Rodney"), ("race", "Human"))
   )))))

JsExp도 Node이기 때문에 그것들을 렌더링하지만 이스케이프해서 렌더링합니다. Script()를 그것들 주위에 감싸면 다음과 같이 됩니다:

<script>
// <![CDATA[
....
]]>
</script>
2011/04/01 01:52 2011/04/01 01:52