2009-03-27 3 views
4

나는 코드의 몇 가지에 본 적이 그리고 나는 그것이 중요했다 "가정"싶지 않았다 그러나 이것은 Google 웹 로그 분석 코드의 복사본입니다 :이중 스크립트 태그의 값은 무엇입니까?

<script type="text/javascript"> 
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
    try { 
     var pageTracker = _gat._getTracker("UA-xxxxxx"); 
     pageTracker._trackPageview(); 
    } catch(err) {} 
</script> 

당신은 거기에 알 수 있습니다 두 개의 열기/닫기 스크립트 태그. 두 개의 다른 스크립트 태그에 코드 비트를 캡슐화하는 것이 유익한 이유가 있습니까? 나의 첫 번째 반응은 단순하게 중복을 제거하는 것이다.

답변

5

첫 번째 블록은 <script> 태그를 페이지에 씁니다. 코드가 모두 하나의 블록에 있다면 코드의 두 번째 부분이 실행되기 전에 쓰여진 <script>이로드된다는 보장이 없을 것입니다.

두 블록을 사용하면 두 번째 블록이 실행되기 전에 <script>이로드됩니다 (_gat 개체 포함).

0

두 개의 스크립트 블록이 다른 소스 모듈 (클래스/객체/무엇이든)에 의해 생성 된 것 같습니다.

0

두 개의 스크립트 태그가있는 가장 큰 이유는 시스템의 두 모듈이 모두 자바 스크립트 기능을 페이지에 추가하려고하지만 둘 다 자체적으로 깔끔하게 삽입되기를 원하기 때문입니다.

페이지를 단일 정적 페이지로 작성하는 경우 스크립트 태그 하나를 사용하는 것이 좋습니다. 페이지가 동적으로 생성되기 때문에 걱정하지 마십시오.

0

첫 번째 스크립트 태그에서 오류가 발생하면 두 번째 스크립트 태그가 여전히 실행됩니다.

그러나 첫 번째 명령에 의존하는 경우 (예 : 첫 번째 명령에서 정의 된 함수를 사용하는 경우) 여전히 실패 할 수 있습니다. (첫 번째 명령이 완전히 실행되지 않았기 때문에)

관련 문제