'웹표준'에 해당되는 글 5건

  1. 2007.01.24 Javascript 실행 순서

Javascript 실행 순서

javascript를 사용해 보기전에 많이 궁금했던게 있다. 여기저기 script tag 들이 들어가면 그 실행순서는 어떻게 될까.. 였다.

그래서 다음의 테스트를 해 보았다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <script language="JavaScript" type="text/javascript">
        <!--
        document.write("before head<br/>")
        -->
    </script>
    <HEAD>
        <title>js test</title>
        <script language="JavaScript" type="text/javascript" src="module1.js"></script>
        <script language="JavaScript" type="text/javascript">
            <!--
            document.write("in head<br/>")
            -->
        </script>
        <script language="JavaScript" type="text/javascript" src="module2.js"></script>
    </HEAD>
    <BODY>
        <script language="JavaScript" type="text/javascript">
            <!--
            document.write(
            "<script language=\"JavaScript\" type=\"text/javascript\" src=\"module4.js\"></script>")
            -->
        </script>
        <script language="JavaScript" type="text/javascript">
            <!--
            document.write("in body1<br/>")
            -->
        </script>
        <script language="JavaScript" type="text/javascript" src="module3.js"></script>
        BODY Contents.<br/>
        <script language="JavaScript" type="text/javascript">
            <!--
            document.write("in body2<br/>")
            -->
        </script>
    </BODY>
</HTML>

module[1,2,3,4].js의 내용은 각각
document.write("module [1,2,3,4]>br/<");
이다. 이때 결과는?
before head
module 1
in head
module 2
module 4
in body1
module 3
BODY Contents.
in body2
이다. 너무도 당연하게 script가 있는 순서대로 수행되었다. 심지어는 document.write()로 적어 놓은 script조차도 그 시점에 실행되었다. 그리고 "BOCY Contents." 를 보면 알겠지만, html 문서상의 text에 대한 evaluation과 병행되어 처리된다.

ECMAScript 스펙 어딘가에 적혀 있긴 하겠지만... 찾아보기 귀찮아서 예제를 돌려 보았다. Safari와 opera, FireFox에서 위와 같은 결과가 나왔으니.. 다 저 순서로 evaluation한다고 보면 되겠지...

Trackback 0 Comment 0
prev 1 2 3 4 next