2014-05-19 7 views
1

내가 awstats의 JS 추적기 파일 awstats_misc_tracker.js하고 최대한 빨리 그것을 포함, 그것은 내 콘솔에서이 오류가 표시를 사용하고 정의되지 않은 :소스 : document.getElementsByTagName (...)는 [0]

var imgsrc1 = awstatsmisctrackerurl+'?screen='+TRKscreen+'&win='+TRKwinsize+'&cdi='+TRKcdi+'&java='+TRKjava; 
var imgsrc2 = '&shk='+TRKshk+'&svg='+TRKsvg+'&fla='+TRKfla+'&rp='+TRKrp+'&mov='+TRKmov+'&wma='+TRKwma+'&pdf='+TRKpdf+'&uid='+TRKuserid+'&sid='+TRKsessionid; 
//alert(imgsrc1); 
//alert(imgsrc2); 
var imgsrc=imgsrc1+imgsrc2; 
if(document.createElementNS) { 
    var l=document.createElementNS("http://www.w3.org/1999/xhtml","img"); 
    l.setAttribute("src", imgsrc); 
    l.setAttribute("height", "0"); 
    l.setAttribute("width", "0"); 
    l.setAttribute("border", "0"); 
    document.getElementsByTagName("body")[0].appendChild(l); 
} else { 
    document.write('<img style="display:none;" src="'+ imgsrc +'" height="0" width="0" border="0" />') 
} 

사람이 나에게이 오류의 sourse을 보여 주시겠습니까 나는 것을 방지 할 수있는 방법 :

TypeError: document.getElementsByTagName(...)[0] is undefined 
    document.getElementsByTagName("body")[0].appendChild(l); 

다음은이 오류를 렌더링 부분입니까?

+2

JS 실행 시점에 ''태그가 있습니까? 아마도 당신은 헤더 파일에 스크립트 파일을 포함 시켰을 것입니다. – h2ooooooo

+0

에 DOM이로드되어 준비가 되었습니까? –

+1

오류의 원인은 document.getElementsByTagName ("body") [0]이 정의되지 않았기 때문에 실행시 body 요소가 없음을 의미합니다. 이제 이유를 알아 내야합니다. –

답변

5

본문을 정의하기 전에 head에 스크립트가 포함됩니다.

스크립트가 구문 분석되어 HTML 파일에있는대로 실행됩니다.

본문이 선언 된 후에이 스크립트를 포함해야합니다.

모든 자바 스크립트를 포함하는 권장 위치는 HTML 파일의 맨 아래에 있지만 때로는 레거시 코드가 손상 될 수 있습니다.

또 다른 방법은 onload 페이지 이벤트에서 스크립트를 실행하거나 쿼리와 '준비'기능을 사용하는 것입니다.

+0

JS 파일을 넣을 위치를 설명하는 [documentation] (http://awstats.sourceforge.net/docs/awstats_config.html#MiscTrackerUrl)에 연결할 수 있습니다. – h2ooooooo