javascript - 异步加载在这种情况下不起作用

标签 javascript jquery

我有一些代码可以在我的网站上异步加载广告,如下所示:

<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 函数从未被调用。原因可能是包含此代码片段的 html 代码首先通过 javascript 加载,如下所示:

// 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");
    }
});

此代码正在 $(document).ready(function () {] 中执行,以防万一。 谁能向我解释为什么这不起作用,并为我提供解决方法或替代方法来解决此问题?

最佳答案

我不明白为什么你需要添加async到 ajax 生成的内容。 async的目的script 的作用是让浏览器继续解析文档,而无需等待脚本完全加载。 onload 事件在脚本完成加载后、DOMReady 之前立即调用。换句话说, asynconload在 DOMReady 之后不会触发

当您将代码片段添加到页面时,页面已经完成解析,因此异步 onload 事件不会触发。

IMO 的解决方案是删除 async部分,只需在 <script> 之后调用该函数即可同步。

关于javascript - 异步加载在这种情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42398855/

相关文章:

javascript - 如何使用 ASP.NET Web API + AngularJs 基于 cookie 的身份验证来验证 cookie

Javascript: execCommand ("removeformat") 不去除 h2 标签

Javascript、Jquery、DOM

javascript - 如果从 Dropdown Knockout js 中选择特定值,则显示 div

javascript - 使用切换按钮折叠/展开内容框

jquery - 图像未集中在 slider 中

javascript - 选择不显示搜索结果

javascript - 在 jQuery 中查找最近的类和 slideDown

javascript - 如何从 jquery 或 javascript 中的字符串值中获取 "year"?

javascript - jqGrid 标题宽度与数据列宽度不同