実在する画像のみを使用する(JavaScript)

画像を画像サーバーにアップすることはよくあります。全容の画像サーバー出なくても、時間の経過につれ、元々あった画像がなくなっている場合があります。この場合は、ただ画像が無いことをユーザーに見せるか、それとも、画像がないこと自体もユーザーに知らせないのか、二者択一になります。もし後者を選ぶ場合であれば、大体3種類の方法があります。

方法1

一つはサーバー再度でチェックを行います。今実在している画像のみをブラウザに送ります。この方法は明らかに大量画像に対応できません。負担がサーバーに大きく集中し、現実的な良策とは言えません。

方法2

残りの二種類の方法はどっちもクライアント再度でJavaScriptで画像の確認を行います。中により簡単な、いわば中間策は、<img>タグのonerrorイベントに自身を削除させるコードを入れさせます。例えばこのコード:

このコードはシンプルで、シンプル過ぎて、ロード中の仮画像は表示されます。せめて、この仮画像は出てほしくないなぁ~と思うなら、ロードに結果が出るまでは透明にするのが一つの方法です。例えば、下記のコードです。

方法3

方法2のバージョンアップとして考えてみれば、画像が成功にロードできる場合に限ってこの画像を実行しましょう。つまり、方法2のonloadに現在画像をページ上の他所に実装するコードを入れます。しかし、ここはこのやり方をあえてせず、この機能をJavaScriptのクラスに清潔にまとめたいと思います。しかも、もうちょっと制御を入れます。

仮に、画像一覧があります。順番どおりにユーザーに見せたいです。しかし、単純な方法2を改装するところで、これは達成し辛いというわけではないですが、ページ上で多少ゴチャゴチャになるところがでてくるかもしれません。このため、コードをカプセル化します。下記のようなコードになます。

このコードでは、実在している画像のみをコーラーに報告します。同時に、報告の順は画像URLの順です。使用方法に関しては、下記のサンプルをご参考下さい。

実例を見る

Leave a Reply

Your email address will not be published. Required fields are marked *