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関数が呼び出されないbeeingて決してされていることです。この理由は、このスニペットが含まれているhtmlコードは次のように最初の場所ではJavaScriptを介してロードさbeeingていることを次のようになります。

// 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() {]で実行beeingてさ。 これはなぜ動作していないのですか?この問題を解決するための回避策または代替手段を私に教えてください。

答えて

1

asyncをajax生成コンテンツに追加する必要がある理由がわかりません。 asyncスクリプトの目的は、スクリプトが完全に読み込まれるのを待つことなく、ブラウザが文書の解析を継続できるようにすることです。 onloadイベントは、スクリプトのロードが完了した後、DOMReadyの直前に呼び出されます。言い換えれば、asynconloadであり、はDOMReadyの後の火ではありません。

ページにスニペットを追加すると、ページはすでに解析が完了しているため、非同期onloadイベントは発生しません。

解決策IMOはasync部分を削除し、<script>の後に関数を同期して呼び出すことです。

+0

ありがとう、とても良い説明です。私は今それを修正することができると思う –

0

ページが読み込まれたときに広告を読み込みたいですか?

デバッグツール(firebugまたはchrome/FirefoxのF12)の[ネットワーク]タブには何が表示されますか?

ここで、$(document).ready()を呼び出しますか?

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

あなたはHTTPリクエストを送信する場合、あなたは私に言うことはできますか?

関連する問題