2017-02-22 99 views
1

我有一些代碼異步加載在我的網站上的廣告,看起來像這樣:異步的onload在這種情況下不工作

<div id="ad-div"></div> 
<script>function onAdReady() { 
    debug_log('Method onAdReady called'); 
    new Ad(document.getElementById("ad-div")) 
} 
</script> 
<script src="http://content.xxxxx.com/ads/ads.min.js" async onload="onAdReady()"></script> 

的問題是,onAdReady功能永遠不會beeing調用。這樣做的原因可能是包含該段中的html代碼beeing通過JavaScript加載在首位是這樣的:是beeing在$(document).ready(function() {]的情況下,可能重要執行

// Initiate out_window_view 
$.ajax({ 
    url: loadPagePath("main.html"), 
    success: function (result) { 
     debug_log("Going in main.html view"); 
     $("#content").html(result); 
    }, 
    error: function (result) { 
     debug_log("Error, failed to load out_window_main view"); 
    } 
}); 

此代碼。 任何人都可以向我展示爲什麼這不起作用,併爲我提供解決此問題的解決方法或替代方法?

回答

1

我不明白爲什麼你需要添加async一個Ajax生成的內容。 async腳本的作用是允許瀏覽器在不等待腳本完全加載的情況下繼續解析文檔。在腳本完成加載之後和DOMReady之前立即調用onload事件。換句話說,asynconload火domready中後。

當您將片段添加到您的頁面,該頁面已完成解析,所以異步onload事件將不會觸發。

解決方案IMO將刪除async部分,並在<script>之後同步調用該函數。

+0

謝謝,這是一個非常好的解釋。我想我現在可以修復它 –

0

您想在加載頁面時加載廣告嗎?

你怎麼在網絡選項卡中,從調試工具(在Chrome/Firefox中螢火蟲或F12)看到了什麼?

你在哪裏打電話$(document).ready()?

https://learn.jquery.com/using-jquery-core/document-ready/

你能告訴我,當你要發送的HTTP請求?

相關問題