2017-01-23 16 views
0

を実行しているときに私は機能を持っているFirefoxでfalseを返す:Javascriptを - Image.completeは本当ですが、リアルタイム

function IsImageLoadable(URL) { 
    var imageObj = new Image(); 
    imageObj.src = URL; 

    var x = (imageObj.complete); 
    var y = (imageObj.naturalHeight); 

    if ((x === true) && (y !== 0)) 
    return true; 
    else 
    return false; 
} 

しても問題はクローム、IE、エッジ、そしてオペラで、このfunctionaltyが正常に動作することです。画像がロード可能な場合は、xyの変数はtrueに設定され、それに応じていくつかの数値が大きくなります。しかし、Firefoxがリアルタイムで実行された場合、xyfalse0に設定されています。

私がリアルタイムで言う理由は、行ごとにデバッグしてステップ実行するとき、trueと等しく、yが500ishに等しいからです。

Firefoxでイメージオブジェクトを使用している場合、これは問題ですか?助言がありますか?ロードイメージ上

+0

のonloadイベントのハンドラ? – Smiranin

答えて

1

設定ハンドラ

function IsImageLoadable(URL) { 
    var imageObj = new Image(); 
    imageObj.src = URL; 

imageObj.onload = function(){ 
    //your code 
} 
} 
+0

私は、イベントハンドラがそれを行うための別の方法であることに同意します(ほとんどの場合、おそらく好ましい方法ですが、避けようとしています)。なぜFirefoxがこの動作を提供しているのか分かりませんか? –

+0

@FrankPalmasani私はたぶんそれが仕様エンジンGeckoと彼の写真の作品であるかどうかわかりません。結果をすぐに得るためにデータを処理する時間がないのかもしれません。 – Smiranin

+0

興味深い。コールバックの使用を避ける理由は、IsImageLoadableの結果を使用して意思決定を行い、イベントが非同期であるためです。 –

関連する問題