WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScriptのプレロード

0:[投稿] 奈々氏 [2007/02/12 10:08 ] [環境:IE6WinXP わからない]

度々申し分けないのですが、画像のプレロードを次のようにしていますが・・・
    var img = [];
    for(var i = 0; i < 5; i++) {
        img[i] = new Image();
        img[i].src = "img" + i + ".gif";
    }

このあと、どのように画像を使えば良いのでしょうか。
調べたサンプルでは<img src="img0.gif">という感じになっていますが、このように普通に使っちゃっていいのですか?

img[i]に画像を代入しているのに、それは使わなくていいのでしょうか。
本当に意味があるのですか。

これをしたあと、画像を沢山表示すると高確率で×になってしまいます。
どうにか防げませんでしょうか。


1:[回答] tk [2007/02/14 01:33 ]

取合えずプレロードしてなにをしようとしているのかわからないのですが^^;
この手の初歩的な事は掲示板を利用するより初心者向けのjavascript解説サイトを利用する方が手っ取り早いです。自分の経験からそう思います。
例えばこのサイト(WEB相談室)のこのページとか
http://chaichan.lolipop.jp/src/javasc19.htm

一度”javascript 初めて”みたいなキーワードでgoogle検索してみて下さい。色々でますよ。


2:[回答] 神崎 [2007/02/14 22:43 ]

プレロードというのは、img[i]に意味があるのではなく、
ブラウザのキャッシュファイルとしてダウンロードすることが目的です。

つまり、
<img src="img0.gif" width="0" height="0">
<img src="img1.gif" width="0" height="0">
などと書いておいても同じといえば同じ。
ただ隠しイメージを使うと、javascriptを使えない環境でも、意味もなくダウンロードして無駄(本来表示したい内容のダウンロードの時間を取られる)になりますから、
通常は、javascriptで使う分はjavascriptで処理するようにします。

> これをしたあと、画像を沢山表示すると高確率で×になってしまいます。
ファイル名が間違っているか、画像がアップロードされていない、またはアップロードに失敗しているなどが考えられます。
プレロードをすることが原因ではありません。

> このあと、どのように画像を使えば良いのでしょうか。
やりたいことを何なりと、、、


3:[回答] 奈々氏 [2007/02/15 00:03 ]

皆様、すばやい回答ありがとうございます。

> ブラウザのキャッシュファイルとしてダウンロードすることが目的です。
掲示板で質問しておいて、こういうのもなんなのですが、どうしても納得できず、試行錯誤をして考えてみたのですが。。。
<img name="img_name">
<script type="text/javascript">
var width = 50, height = 50;   // 画像の幅と高さ
var imgObj = new Image(width, height);
imgObj.src = "test.gif"; // 表示する画像パス
document['img_name'].src = imgObj;
</script>

とすることで解決しました。この方法だと×になりませんでした。

> ファイル名が間違っているか、画像がアップロードされていない、またはアップロードに失敗しているなどが考えられます。
しかしながら、imgタグにonErrorを指定し、失敗したらlocation.href = "自分自身.html";とし、再ロードすることで完全なロードをするようにしていました。
どうやら、たくさんの画像を読み込もうとすると割愛されてしまう場合があるようです。(あくまで憶測ですが)


思うに私の環境では、キャッシュファイルが使用されるのは、次に接続したときのみのようです。
上のやり方が確実なような気がしますが、何の根拠もありません。
皆様の意見を伺いたいです。回答お願い申し上げます。


4:[回答] 奈々氏 [2007/02/15 13:58 ]

すみません。上のは間違えていることに気がつきました。

しかし、プレロードをしてもやはり×になってしまいます。
同じ画像を100個読み込むだけでダメでした。
どうすればよいのでしょうか。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]