如何使JavaScript代码在另一个之前运行

时间:2013-03-04 17:26:29

标签: javascript html adsense

由于AdSense脚本,我的脚本出现问题...当AdSense脚本无法加载时,我的脚本运行良好,但如果AdSense加载,则我的脚本无法加载。我知道我的脚本在AdSense脚本之后运行。

所以我想,如果我的脚本在AdSense脚本运行之前运行(因为脚本是将预标记更改为表格,因此它只更改了布局),所有内容都会加载,而不是只加载AdSense ...

我的javascript是:

window.onload = function(){
var preElements = document.getElementsByTagName('pre');
var codeLine = new Array();
var newContent

for(var i = 0; i < preElements.length; ++ i)
{
    var element = preElements[i];
    newContent='<div align="center"><table width="75%" border="1" cellpadding="0" cellspacing="0" >'

    codeLine = element.innerHTML.split('\n');

    for(var j=0 ; j < codeLine.length ; j++){
        newContent = newContent + '<tr><td width="30" class="codeNumber" >' + j.toString() + ' </td><td class="codeTab"> ' + codeLine[j] + '</td></tr>';
    }

    newContent = newContent + '</table></div>';
    element.innerHTML = newContent;


}

}

它加载在Head部分,AdSense加载到单元格中,我只有一个广告空间。 我无法为单元格提供ID,因为AdSense不是单元格中的唯一内容......而另一件事...... AdSense的调用地点完全不同于我有预标签的

解决:首先我真的不太了解这一点,经过一番研究后我发现了问题。 1ºAdms存在连接问题,因此在其后运行的所有脚本都无法加载 2º如果你有“window.onload”,你在哪里有脚本并不重要......我认为当窗口加载时该功能起作用但实际上它会在窗口完全加载后起作用,这就是为什么它与AdSense产生了冲突。

你们帮助我更快地看到这件事了!

3 个答案:

答案 0 :(得分:2)

通常,大多数人都会在结束</body>代码之前添加广告和Google Analytics代码。

您应该尝试避免使用代码的竞争条件,从加载到执行,它应该是事件驱动和模块化的。如果Adsense需要进入由另一个脚本设置的容器,那么当其他脚本在完成DOM更新时加载Adsense作为回调是有意义的。像这样:

function loadAdsense(elementId) {

    var js = document.createElement('script');
    js.src = 'http://pagead2.googlesyndication.com/pagead/show_ads.js';

    window.google_ad_client = 'ca-pub-xxxxxxxxxxxx';
    window.google_ad_slot   = '1234567890';
    window.google_ad_width  = 336;
    window.google_ad_height = 280;

    document.getElementById(elementId).appendChild(script);
}

function preToTable() {
    // set PRE to TABLE - id = myNewTable
    // then load Adsense
    loadAdsense('myNewTable');
}

答案 1 :(得分:0)

您应将javascript放在head标记中,并将AdSense代码放在内容的末尾。另一种解决方案是在第一个脚本完成后使用javascript事件打印AdSense脚本。

答案 2 :(得分:0)

解决:首先我真的不太了解这一点,经过一番研究后我发现了问题。 1ºAdms存在连接问题,并且因为它之后运行的所有脚本都不会加载2º如果你有“window.onload”,你在哪里有脚本并不重要...我想该功能在窗口加载时起作用但实际上,它将在窗口完全加载后起作用,这就是它与AdSense产生冲突的原因。