2013-03-04 53 views
0

由于AdSense脚本,我遇到了脚本问题......当AdSense脚本加载失败时,我的脚本运行良好,但是如果AdSense加载,我的脚本不会运行加载。我知道我的脚本在AdSense脚本之后运行。如何使JavaScript代码在另一个之前运行

所以我在想,如果我的脚本在AdSense脚本运行之前运行(因为是一个将pre标签更改为表的脚本,因此它只会更改布局),所有内容都将加载,而不是仅加载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; 


} 

} 

它装在头段和AdSense的加载细胞内,我只有一个adspace。 我不能给单元格ID,因为AdSense不是单元格上的唯一东西......而另一件事情...... AdSense被调用的地方完全不同,在那里我有预标签

解决:首先,我真的不知道这件事,经过一些研究后,我发现了这个问题。 1ºAdSense存在连接问题,并且因为它后面运行的所有脚本都不会加载 2º如果您有脚本中的“window.onload”,则脚本的位置并不重要...我认为这个函数在窗口加载时起作用,但实际上它会在窗口完全加载后运行,这就是它与AdSense产生冲突的原因。

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

+0

当你的脚本加载AdSense时它不运行有什么问题?解决这个问题不是更好吗?试着解释什么是行不通的。 – 2013-03-04 17:31:49

+0

该脚本将pre标签的内容更改为表格格式(如同编译器的环境)。使用AdSense,它不会改变任何内容,如果没有,它可以正常工作 – 2013-03-04 17:39:08

+0

JavaScript浏览器控制台中是否存在任何错误?你有一个活页面,我们可以看到什么不起作用? – 2013-03-04 20:02:13

回答

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'); 
} 
+2

这有点含糊。你在谈论OP的Javascript还是AdSense? – 2013-03-04 17:28:21

+0

详细阐述,欢呼! – AlienWebguy 2013-03-04 17:30:20

+0

我无法在关闭身体标记之前放置脚本,因为它会将广告放置在错误的地方... – 2013-03-04 17:36:57

0

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

+0

我不能放置adsense在我的内容的末尾,因为广告将出现在所有页面之后... – 2013-03-04 17:36:08

+0

然后创建一个_placeholder_'div'或'span',并且在脚本完成后,向其注入adsense代码('innerHtml'属性)与JavaScript。这将动态加载脚本。 – jameson 2013-03-04 18:26:40

0

解决:首先我真的不知道这件事,经过一些研究后,我发现了这个问题。 1ºAdSense存在连接问题,并且因为所有在它之后运行的脚本都不会加载2º如果您在其中有“window.onload”,那么脚本的位置并不重要......我想过该功能在窗口加载时起作用,但实际上它会在窗口完全加载后起作用,这就是它与AdSense产生冲突的原因。

相关问题