차림

2006년 10월 30일

document.write에 script 태그 넣기

자바스크립트에서 document.write에 <script>를 넣어 자바스크립트를 또 집어넣어야 할 때가 있다. 외부 js 파일을 이용해서 HTML 문서에 자바스크립트가 나오도록 하는 등의 경우이다. 그런데 document.write에 <script> 태그를 그대로 쓰면 오류가 날 수 있기 때문에 그걸 피하기 위해서는 다음과 같이 해야 한다.

</script> 대신 <\/script>로 쓰기

닫는 태그를 </script> 대신 <\/script>로 써 주면 오류를 피할 수 있다.


document.write('<script 
type=\"text/javascript\" src=\"ex.js\">
<\/script>')

<script> 태그 쪼개기

<script>와 </script>를 그대로 쓰지 말고 여러 부분으로 쪼개면 오류를 피할 수 있다.

아래와 같이 조각조각 쪼개거나


document.write('<' + 'script 
type=\"text/javascript\" src=\"ex.js\"' + '><' 
+ '/script' + '>')

아니면 아래와 같이 script라는 것만 눈치채지 못하게끔 script를 두 부분으로 쪼개도 된다.


document.write('<scr' + 'ipt 
type=\"text/javascript\" src=\"ex.js\"></scr' 
+ 'ipt>')

이게 왜 필요한가?

이 방법을 찾아 많이 헤맸는데 왜 이걸 찾아다녔는가 하면 바로 다음과 같이 쓰기 위해서다.


ad.js

document.write('<script 
type=\"text/javascript\" src=\"ex.js\">
<\/script>')

example.html의 body

<script type="text/javascript" src="ad.js">
</script>

example.html을 포함한 여러 html 문서에서 모두 똑같이 외부 ad.js 파일을 불러들여 body의 특정 부분에 뭔가를 나타나게끔 하려고 하는데, 불러들이는 부분에 외부 ex.js 파일이 들어가 있기 때문에 그 부분을 document.write로 나타낼 수밖에 없다.

사실 이건 구글 분석기 (Google Analytics)나 다음 웹 인사이드 분석기 자바스크립트 코드를 황씨신문의 모든 웹 문서에 넣기 위해 필요했다. 수많은 웹 문서 파일을 일일이 고치긴 귀찮으니까 분석기의 자바스크립트 코드, 즉 외부 js 파일 (위의 예로 들면 ex.js이고 구글 분석기를 예로 들면 urchin.js)을 document.write로 나타내도록 하는 내용을 담고 있는 외부 js 파일 (위의 예로 들면 ad.js)을 불러들이는 것이다. 황씨신문의 모든 웹 문서에는 예를 들어 ad.js 파일을 불러들이는 부분이 body에 들어 있기 때문이다.

하지만 어찌된 일인지 이렇게 외부 js 파일을 이용해 분석기 js 파일을 불러들이면 불여우 1.5에서는 카운터가 제대로 작동했는데 IE 6.0에서는 제대로 되지 않았다. 이렇게 이중으로 자바스크립트를 불러들일 때에는 불여우와 IE에서 모두 제대로 되는지 확인해 봐야 할 것 같다.

목록