2011-07-05 16 views
1

JavaScriptのImageオブジェクトにイメージをロードするとき、私はloadイベントが画像iのためにトリガされると、その後、i.completetrueあるべき、ということを前提となります。それは起こっていないか、私のjQuery/JavaScriptコードにバグがあります(おそらく私には疑わしい)。画像の読み込み:JavaScriptのオンロードとイメージ::完全な(Firefox 3の)

コード(道ストリップダウンが、私はどのような関連性があることはここにあることをかなり確信しています)

$img = $('<img />'); // This line added by edit for clarification 
var eventData = { 
     sheet: this, 
     resolution: resolution, 
     i: i, 
    }; 

$img.bind('load', eventData, onTileLoad); 
$img.attr('src', tile.src); 

onTileLoad = function(ev) { 
    var sheet = ev.data.sheet; 
    var resolution = ev.data.resolution; 
    var i = ev.data.i; 

    if (!this.complete) { 
     console.log('Image load not complete: sheet ' + sheet.sheetName + 
       ', resolution ' + resolution + ' tile ' + i) 
    }; 

    .... 
}; 

このコンソールログには、いくつかのトリガーが、ほとんど、私の画像を決して。私はそれが決して誘発すべきではないと思います。それは価値があるため、私はFireFox 3.6.18で作業しています(非常に安定しており、優れた開発ツールがあるためです)。

何が起こっているのでしょうか?

答えて

0

$imgは? onTileLoad関数で

は、 this $imgを指します。 $imgがjQueryオブジェクト(そのように見える)の場合、 completeプロパティはありません。 completeプロパティはDOMオブジェクトでのみ設定されます。

これを見てくださいtest case

希望これは、先にすべてのこの `VAR $ IMG = $( '')の

乾杯申し訳

+0

を、助けます;'。それに応じて編集されました。 –

+0

しかし、 'onTileLoad'では、' this'は '$ img'ではなく、JavaScriptの' Image'オブジェクトになります。これはイベントハンドラで 'this'が動作する方法です。 jQueryオブジェクトが必要だった場合、私は '$(this)'ユーザを持っていなければなりません。したがって、「完全」は正しいオブジェクトに設定する必要があります。実際には、ほとんどの場合、上記のように、「このコンソールログは、私のイメージの一部ではありませんが、決してほとんどではありません。 –

+0

はい..あなたは正しいです、私が言ったことを忘れてください^^私はまだ問題がどこにあるかを調べています=) – pomeh

関連する問題