Hatena::ブログ(Diary)

kotori@notes

2008-01-08

画像の遅延ローディング

| 00:58 |

画像の遅延ローディングについて調べてみた。

参考にしたのはこの辺:

仕組みは案外単純。適当タイミングで遅延ローディングしたいimg要素のsrc属性を適当な画像(blank.gifとか)に置換、表示が必要になったらsrc属性の値を元の値に戻してあげるだけ。

あとは、表示が必要になるタイミングを判断するロジックと組み合わせればOK。画像のところまで画面がスクロールされたかとか、display値が切り替えられるタイミングとか。

// prototype.jsを利用した場合
Foo = {
  images: [],
  stopLoadingImages: function() {
    $$("div#foo img").each(function(image) {
      image.orgSrc = image.src;
      image.src = "/img/blank.gif";
      Foo.images.push(image);
    });
  },
  loadImages: function() {
    Foo.images.each(function(image) {
      image.src = image.orgSrc;
    });
  }
};
// あとは適当なタイミングで
// Foo.stopLoadingImagesと
// Foo.loadImagesを実行するだけ

// このコードがきちんと動くかどうかまだ確かめてないので注意…

shuwatshuwat 2008/01/11 12:31 はじめまして。
昨年11月のエントリをみて思ったのですが、
moonyってmojaviみたいにアクションクラスが爆発しませんか?

hiro_yhiro_y 2008/01/11 12:54 こちらこそはじめましてー。
アクションクラスの爆発とは具体的にどういうことでしょう?

shuwatshuwat 2008/01/12 13:22 Mojavi2を使っていたころに、各画面ごとにアクションクラスを作るので、規模が大きくなるにつれアクションクラスがどんどん増える状態のことをそんな風に言っていました。

hiro_yhiro_y 2008/01/13 12:15 なるほど、アクションクラスが多くなることを指していたのですね。確かにアクション単位でアクションクラスを作ることになるので、ファイル数は増えると思います。ただ、配置ディレクトリは階層化されますし、そもそもMoonyが大規模開発向けでない(できないわけではないですが)という点を考えると今のままの仕様でいいかな、と思います。

トラックバック - http://d.hatena.ne.jp/hiro_y/20080108/1199721482