繁体   English   中英

加载页面后加载javascript

[英]load javascript after loading the page

我读了很多主题,尝试了很多东西,但我找不到想要的东西。 我只是在页面末尾移动了我的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代码,但是在文件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中,如果我输入以下代码,则会显示“确定”:

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需要一个函数回调; 但是,您正在使用adsense()执行adsense ,而adsense不会返回函数; 因此, window.onload会丢弃它。 改成:

    window.onload = adsense;

UPDATE

上面的答案应该被丢弃,但是我将其保留,以便人们可以知道window.onload需要一个函数回调:)

请记住,对script元素的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和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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM