며칠 전 Razor 템플릿 엔진을 JavaScript로 포팅하는 연구 중에 document.write를 사용한 콘텐츠 출력에 외부 JavaScript를 호출하는 <script> 태그가 포함되어 있으면 문제가 있을 수 있다는 사실을 발견했습니다. 여기 내부에서 호출되는 외부 JavaScript가 있습니다. IE 및 Opera의 경우 쓰기 매개변수의 다른 모든 부분이 구문 분석될 때까지 이러한 외부 JavaScript가 실행되지 않습니다. <br><br>추가 조사 결과 WebKit 웹 페이지 레이아웃 엔진을 사용하는 두 브라우저인 Chrome과 Safari의 경우 외부에서 호출된 JavaScript가 document.write를 다시 호출하여 외부의 <script> 태그를 작성하는 경우를 발견했습니다. JavaScript가 호출되면 두 번째로 호출되는 외부 JavaScript가 실행되지 않고 일부 후속 콘텐츠도 중단됩니다. 실제 상황은 실제로 조금 더 복잡하며 두 번째 및 세 번째 수준과도 관련이 있습니다. document.write 호출에 있는 매개변수의 특정 내용에 대해서는 시간과 에너지 제약으로 인해 더 구체적인 테스트를 수행할 수 없습니다. <br><br>이러한 연구 이후 모든 document.write 호출을 올바르게 처리할 수 있는 주요 주류 브라우저 중 유일하게 살아남은 것은 Firefox입니다. <BR>Firefox의 유사 "멀티 스레드" 이벤트 처리 기능은 제가 항상 매우 싫어하는 부분이었습니다. 이번 사건은 "각각의 장점이 있다"는 증거라고 볼 수 있습니다. <br><br>이 문제로 인해 발생하는 다양한 현상을 이해하려면 write-test.zip을 다운로드하여 압축을 풀고 다양한 브라우저에서 write-test.htm을 열어보면 됩니다. <br><br>지난 며칠 동안 이 문제를 해결하기 위해 대체 함수를 작성하려고 노력했으며, 위 링크의 테스트를 성공적으로 통과했습니다. <BR>앞으로 며칠 내에 뚜렷한 문제가 발견되지 않으면 모두가 참고할 수 있도록 블로그에 게시하겠습니다. <BR><A href="http://xiazai.jb51.net/201008/yuanma/write-test.rar" target=_blank>테스트 코드, 패키지 및 다운로드</script>