2011-12-05 3 views
0

많은 주제를 읽고 많은 것을 시도했지만 원하는 것을 얻을 수 없습니다. 방금 ​​페이지 끝에서 js 코드를 이동했는데 오류가 발생합니다.페이지를로드 한 후 자바 스크립트를로드하십시오.

function adsense(){ 
    <!-- 
    google_ad_client = "pub-xxxxx"; 
    /* 120x600, date de création 11/06/11 */ 
    google_ad_slot = "xxxxx"; 
    google_ad_width = 120; 
    google_ad_height = 600; 
    //--> 
    } 

생각은 단 하나에 애드 센스에 대해 동일한 코드를했다 : fonctions.js에서

<html> 
    <head> 
     bla bla 
    </head> 
<body> 
    bla bla 
    <div class="advertising"> 
     <script type="text/javascript" defer="defer"> 
      window.onload = adsense(); 
     </script> 
     <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
     </script> 
    </div> 

    <script language="javascript" type="text/javascript" src="fonctions.js"></script> 
</body> 
</html> 

내가 내 구글 애드 센스 코드를 가지고 :

이 내 페이지와 같은 모습입니다 장소 있지만 파일 fonctions.js 후로드 할 수 없습니다.

나는 defer = "지연", window.onload 시도 ...

아이디어가 있으십니까? 감사

나는 방화범이 오류를 얻을 : 오류 : 애드 센스가 정의되어 있지

PS :

: 나는

UPDATE (너무 큰 페이지를 만드는 피하기 위해) jQuery를 사용하지 않도록하고 싶습니다

<script type="text/javascript" defer="defer"> 
     (function() { // 'sandbox' javascript pattern to prevent clobbering 
         // global namespace 
      var executeProxy = function() { 
       if (typeof adsense === 'function') { // adsense is configured 
        adsense(); 
       } else { // adsense is not configured; 
          // therefore, try again later 
        setTimeout(executeProxy, 50); 
       } 
      }; 
      executeProxy(); 
     }()); 
    </script> 
    <script language="javascript" type="text/javascript" src="fonctions.js"></script> 
는 나는 다음과 같은 코드를 삽입하는 경우 fonctions.js에서

는 "OK"가 표시됩니다

function adsense(){ 
alert ("ok"); 
} 
이 코드가있는 경우 3,691,363,210

는하지만, 광고가 표시되지 않습니다

function adsense(){ 
google_ad_client = "pub-xx"; 
/* 120x600, date de création 16/04/11 */ 
google_ad_slot = "xxx"; 
google_ad_width = 120; 
google_ad_height = 600; 
} 

내 생각은 코드가 이러한 방식으로로드 할 수없는 구글의 문제 ...가 ...라는 것이다? 내가 (전화 아래 - 당신이) '여기'(경고를 할;) 페이지에 애드 센스 코드를 넣으면 는 잘 표시됩니다 ... 그래서 내 애드 센스 코드는

UPDATE 올바른 : 내가 가진 마지막으로 솔루션을 변경했습니다. 코드를 .html 파일에 넣었고 PHP를 사용하여 코드를 포함 시켰습니다. 그래서 내 js 파일에 더 이상 없습니다. 어쨌든 도와 주셔서 감사합니다.

+0

_ 어떤 오류가 발생합니까? – SLaks

+0

오류 : adsense가 정의되지 않았습니다. – remyremy

+1

이렇게하십시오 -'window.load = function() {adsense(); };' – treecoder

답변

3

window.onload에는 함수 콜백이 필요합니다. 그러나 adsenseadsense()으로 실행하고 adsense은 함수를 반환하지 않습니다. 그러므로 window.onload은이를 버립니다. 변화 :

window.onload = adsense; 

UPDATE

위의 대답은 폐기되어야하지만 사람들이 window.onload 함수 콜백 :

은 명심 기대 것을 알 수 있도록 내가 그것을 떠날거야 그 스크립트 요소의 defer은 스크립트를 실행하기 위해 페이지가로드 될 때까지 브라우저가 대기하도록 지시합니다. 그러나 fonctions.js은 마지막 script 태그의 src 속성에 있습니다. 따라서 지연된 스크립트는 adsense이 정의되기 전에 실행될 가능성이 높습니다. 브라우저가 스크립트를 검색하기 위해 http 요청을하기 때문입니다. 이렇게하면 adsense이 정의되지 않은 동안 지연된 스크립트를 계속 실행할 수 있습니다.

<script type="text/javascript" defer="defer"> 
     (function() { // 'sandbox' javascript pattern to prevent clobbering 
         // global namespace 
      var executeProxy = function() { 
       if (typeof adsense === 'function') { // adsense is configured 
        adsense(); 
       } else { // adsense is not configured; 
          // therefore, try again later 
        setTimeout(executeProxy, 50); 
       } 
      }; 
      executeProxy(); 
     }()); 
    </script> 

UPDATE

그 스크립트 연기가 IE 이외의 아무것도 지원되지 않습니다 잊었 : 원래 이연 스크립트 대신이보십시오. 따라서 지연 문제는 여기에 있지 않아야합니다. 그러나, 나는 FF와 크롬에 다음 코드를 테스트하고, 작동 :

<script type="text/javascript" defer="defer"> 
     (function() { // 'sandbox' javascript pattern to prevent clobbering 
         // global namespace 
      var executeProxy = function() { 
       if (typeof adsense === 'function') { // adsense is configured 
        adsense(); 
       } else { // adsense is not configured; 
          // therefore, try again later 
        setTimeout(executeProxy, 50); 
       } 
      }; 
      executeProxy(); 
     }()); 
    </script> 
    <script type="text/javascript"> 
     function adsense() { 
      alert('here'); 
     } 
    </script> 
+0

여전히 얻을 수 있습니다. 이 같은 오류가 – remyremy

+0

아, 죄송합니다. 문제를 확인하고 답변을 업데이트하겠습니다. – Ryan

+0

도움을 주셔서 감사합니다.하지만 여전히 작동하지 않습니다. 경고를 걸면 ("ok"); adsense() 직후. 표시되지만 광고는 계속 표시되지 않습니다. 그러나 스크립트 앞에 fonctions.js를 삽입하면 광고가 표시됩니다 ... – remyremy

1

window.onload = adsense(); 즉시을 adsense()를 호출하고 onload에 반환 값을 할당합니다.

관련 문제