2012-11-03 1 views
5

jQuery構文を使用する場合:$("<img src='img.jpg'>")、イメージは実際にクライアントにダウンロードされますか?または私はそれをダウンロードするために体に追加する必要がありますか?

答えて

6

画像を読み込むために画像要素を文書に追加する必要はありません。

画像要素自体は、画像を作成するとすぐに(そして値がsrcになるとすぐに)画像を要求します。 http://jsfiddle.net/Guffa/AvgVN/

Google "javascript preload"これを使用するコードの例のトンを見つけるために:

ウォッチ(Firebugは/開発ツールで)ネットacivityあなたはこれを実行したとき。

+0

私はこれが間違っていると思ったが、そうではありませんでした! 90年代後半の画像プリローダーのスクリプトもそのように機能していたことを覚えています。 –

+0

私も。実際には、それは実際に瞬時にダウンロードされています! – techfoobar

5

はい、画像はすぐにダウンロードされます。

作成されたImage要素がDOMにまだ存在しない場合でも、ブラウザは.src属性が設定されるとすぐにダウンロードを開始します。

あなた自身のアバターを使用して、私は、コンソールでこれをやった:

> i = $('<img src="http://graph.facebook.com/100002351317104/picture?type=large">'); 
... 
> i[0].width 
180 

は、画像が実際にロードされていることを示します。

これについては、実際にはそうでなければならない場合があります。それ以外の場合、画像のプリロードはうまくいかない可能性があります。イメージのプリロードは、デタッチされたImageノードの作成とそのsrcの設定(正確には$("<img src=...>"))に依存します。

+0

+1実際には即座にダウンロードされています! – techfoobar

2

私は「はい」と言いますか、ブラウザに依存しています。例えばクロムの

$("<img src='http://crssrd.com/web_apps/index/themes/crssrd.com/images/loading.gif'>")​ 

テストこれは:http://jsfiddle.net/SMnhU/ 画像を瞬時にダウンロードされます。

+0

ブラウザで画像を即座にダウンロードしないでください。 –

+0

いいえ、私がテストしたすべてのブラウザが即座にダウンロードします。しかし、私はオペラをテストしていませんが、このブラウザとは異なる場合は、本当に驚きます。 –

+0

おそらくそれはブラウザに依存していないと言っても間違いありません:) –

関連する問題