2017-02-22 81 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请求?