質問

私は多くのトピックを読んで、たくさんのことを試しましたが、私が望むものを手に入れることができません。ページの最後に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では、Google AdSenseコードを持っています:

 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;
    //-->
    }

アイデアは、AdSenseの同じコードを1つだけで持っていることでしたが、ファイルfonctions.jsの後にロードすることはできません。

Defer = "Defer"、window.onloadを試しました...

何か案は?ありがとう

FireBugでこのエラーが発生します:エラー:AdSenseは定義されていません

PS: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");
}

ただし、このコードがある場合、広告は表示されません。

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;
}

私の推測では、それはGoogleの問題だと思います...この方法でコードをロードすることはできません...? AdSenseコードをページに配置した場合(通話の下 - あなたがする場所 アラート( 'here'); )それはよく表示されています...だから私のadsenseコードは正しい

更新:最終的にソリューションを変更しました。コードを.htmlファイルに入れて、PHPを使用して含めます。だから、それはもう私のJSファイルにはありません。とにかくあなたの助けをありがとう。

役に立ちましたか?

解決

window.onload 関数のコールバックが期待されます。ただし、実行しています adsenseadsense(), 、 と adsense 関数を返しません。したがって、 window.onload それを捨てます。への変更:

    window.onload = adsense;

アップデート

上記の答えは捨てられるべきですが、私はそれを残しているので、人々はそれを知ることができます window.onload 関数のコールバックを期待しています:)

それを念頭に置いて defer スクリプトの要素で、ページがロードされてスクリプトを実行するまで待機するようにブラウザに指示します。しかし、あなた fonctions.js の中に src あなたの最後の属性 script 鬼ごっこ;したがって、繰延スクリプトは以前に実行される可能性が高い 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>

アップデート

IE以外のものでは、スクリプトDeferがサポートされていないことを忘れました。したがって、ここで延期された問題は関係してはいけません。ただし、FFとChromeで次のコードをテストしましたが、機能します。

    <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>

他のヒント

window.onload = adsense(); 電話 adsense() すぐに 返品値をに割り当てます onload.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top