BGM용 세이라디오
열기▼       고정
전체
글목록

Blogger에서 html, 자바스크립트 작성할 때 유의점

월요일, 8월 19, 2013
1. 인코딩vs디코딩

(!자바스크립트 문자열이라고 규칙이 바뀌진 않는다)
레이아웃 위젯에서  &, <, >, ', " 등의 기호를 &amp; 등 ascii 코드로 쓰면 오류가 발생한다. 그냥 &&, "<a>"와 같이 써도 충분하다. 필자의 생각이지만 아마 이 경우 script 태그를 감지해 그 안의 내용을 html 기준이 아니라 JS기준으로 해석하는 것 같다.즉 일반적으로 브라우저가 html 문서를 해석하는 방식을 따른다.
...<script>
if(1<2){alert("<&");} //"<&" 알림
</script>...
요약:레이아웃 위젯은 일반적인 브라우저의 html 해석 방식에 맞춰 작성

이에 반해 템플릿에서는 script 태그 안의 문자더라도 html 기준으로 해석한다. 템플릿은 XML로 html 데이터를 포장하기 때문이다. 따라서 XML 데이터를 블로거 서버에서 디코딩(<, &등을 &lt;, &amp;와 같이 변경)해 유저에게 전송하므로 script 태그를 감지하기 어렵다. 그러므로 script안의 문자는 html로 해석되지 않도록 인코딩된 ascii 코드로 써야 한다. 반면 html은 b 태그가 아니므로 XML과 혼동되지 않아 괜찮다.
...<b:if cond='1&lt;2'> <!--cond 문자열도 JS기반이므로 인코딩-->
<script>
if(1&lt;2){alert(&quot;&lt;&amp;&quot;);} //위와 같은 결과
</script>
<div id="not_ascii" onclick="alert(&quot; inner quote is encoded &quot;);"/>
</b:if>...
요약:템플릿은 JS(onclick 등과 b태그의 cond 포함)를 인코딩해야 함

포스트도 아마 XML일 것이다. 또 포스트에는 script 태그가 허용되지 않으며, 일반적인 룰처럼 글자로 렌더링되는 코드는 ascii코드로 작성해야 한다.
<span>&lt;spaaaan&gt;</span> ☞ <spaaaan>
요약:포스트는 JS를 사용할 수 없다.



2. option 태그

드롭다운박스의 항목, 즉 option tag는 <option />[내용] 이런 식으로 써줘야 제대로 작동한다.(HTML5도 아닌거같은데 왜이런지 의문) 구문을 이렇게 쓰지 않으면 html을 저장할 때 위치가 뒤죽박죽된다.
첫 댓글을 써주세요!

댓글을 인용하려면 @![댓글 ID]!@와 같이 쓰시면 됩니다. "@!" 와 "!@"를 쓰시려면 "+@+!+", "+!+@+"와 같이 써주세요.

페이스북 댓글
.post-outer{ -webkit-transform:none; transform:none; display:inline; padding:0; margin:0; border-width:0; } .hentry>div{ display:none; }