자바스크립트에서 document.write
에 <script>를 넣어 자바스크립트를 또 집어넣어야 할 때가 있다. 외부 js 파일을 이용해서 HTML 문서에 자바스크립트가 나오도록 하는 등의 경우이다. 그런데 document.write
에 <script> 태그를 그대로 쓰면 오류가 날 수 있기 때문에 그걸 피하기 위해서는 다음과 같이 해야 한다.
닫는 태그를 </script> 대신 <\/script>로 써 주면 오류를 피할 수 있다.
document.write('<script
type=\"text/javascript\" src=\"ex.js\">
<\/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에서 모두 제대로 되는지 확인해 봐야 할 것 같다.