2017-02-22 3 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 никогда не неоспоримые называется. Причиной этого может быть то, что 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() {] в случае, возможно, имеет значения. Может ли кто-нибудь объяснить мне, почему это не работает, и предоставить мне обходной путь или альтернативный способ решения этой проблемы?

ответ

1

Я не понимаю, почему вам нужно добавить async в контент, созданный ajax. Цель сценария async - позволить браузеру продолжать анализировать документ, не дожидаясь полной загрузки сценария. Событие onload вызывается сразу после завершения загрузки скрипта и перед DOMReady. Иными словами, asynconload будет не пожар после DOMReady.

Когда вы добавляете фрагмент на свою страницу, страница уже закончила синтаксический анализ, поэтому событие async onload не будет срабатывать.

Решение IMO должно удалить часть async и просто вызвать функцию после <script> синхронно.

+0

Спасибо, что очень хорошее объяснение. Я думаю, что смогу это исправить сейчас –

0

Вы хотите загрузить объявление, когда страница загружена?

Что вы видите на вкладке сети из инструментов отладки (firebug или F12 в chrome/Firefox)?

Где вы называете $ (document) .ready()?

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

Можете ли вы сказать мне, когда вы хотите, чтобы отправить запрос HTTP?

 Смежные вопросы

  • Нет связанных вопросов^_^