3

サファリとオペラでは、.loadのコールバック関数は、キャッシュされていない画像が完全に読み込まれるのを待ちません。キャッシュされた画像では、完全に正常に機能します。

コードは少し複雑です、私は単純化しようとします...

だから、私のjsはこれです:

        $('#chatwindow_' + thread_id).load('/chat.php?thread_id=' + thread_id, function(){


            $('#chatwindow_' + thread_id).children('.chat_messagebox').load('/messages.php?sel=chat&latest_messages=10&thread_id=' + thread_id, function(){

//THIS IS BEING EXECUTED BEFORE THE IMAGES ARE FULLY LOADED, 
//BUT I EXPECT IT TO BE EXEC AFTER THE IMAGES ARE LOADED

                $(this).scrollTo('max',0);
                $('#chatwindow_' + thread_id).find('.messages_newcontent').focus();
        });


    });

messages.php?sel = chat:

<? include(gen_path("/messages_messagelist.php")); ?>

messages_messagelist.php:

while($x < $x_total){
load_attachments("message_".$message_row['id'], $max_width_of_att_field)
}

そして最後に、関数からの重要なスニペット:

return "<img src='/upload/attachments/".$attachments_row['id']."' width='160' class='download_file info_nextsibling' id='downloadfillabeobj_".$attachments_row['id']."'>"

そしてそれだけです-そしてこの最後の<img>がキャッシュされていない場合、最初の.loadコールバック関数が呼び出された後に完全にロードされます-キャッシュされていないすべての画像を待つ方法についてのアイデアはありますか?

4

1 に答える 1

1

ここでDavid DeSandro のimagesLoaded jQuery プラグインを調べてください

ドキュメントから:

「キャッシュされた画像に対して .load() を実行することはできません」

于 2012-08-02T16:41:42.470 に答える