2013-03-04 51 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產生衝突的原因。

相關問題