• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像縮小プログラムが、最初に読み込んだ時(再読み込みしない場合)動きません。)

画像縮小プログラムの不具合と改善方法

このQ&Aのポイント
  • 最初に読み込んだ場合に動かない画像縮小プログラムの問題とは?
  • 他のドメインの画像を縮小して表示する方法は?
  • クライアントサイドでの縮小の改善方法はある?

質問者が選んだベストアンサー

  • ベストアンサー
  • arexis
  • ベストアンサー率66% (66/99)
回答No.1

ロード済確認が無い事、まはたロード時間に関する問題だと思います。 onloadを使わずにkeep_max()を実行させると、まだ読み込みが完了してない画像は document.images[i].heightの値が 0 や undefinedとなります。 従って if ( document.images[i].height > max_height) が falseになりますから、初回は目的の動作はしないケースがある。 2回目、リロードなどはキャッシュから読み込むので読み込みも速く、if ( document.images[i].height > max_height) が trueになる。 また、オンロードを待たずにエレメント操作を開始してるので、場合によってはdocument.images配列がどこまで完成してるのか?も怪しいケースもあり得ます。 onloadを使う場合にタイムラグがあるのは、onloadはドキュメントの文字だけでなく画像やiframe等のドキュメント内のエレメントのロードが全部完了して『ロード』になります。 全てが読み終わってからなので if ( document.images[i].height > max_height) は全てtrueになりますが、数の多い画像を全部読みこんでからですので時間がかかると言う事でしょう。 質問者さんの思う所のページ表示のスマートさがどこにあるかによって対処法は違うと思います。 画像タグには一旦ロード中画像を表示さておいて、JavaScript側で画像を読み込んでロードが完了してからIMGタグに充てると言う手などもありますよ。 或いはドキュメントのオンロードタイミングではなく、個々のIMGにonloadを付けて個別にサイズ調整関数を動かすなど。 理想とする形は?

gurujowa
質問者

お礼

IMGタグの全てにonloadでkeep_maxをいれると理想の形になりました。 理想の形は、あくまでjavascriptで処理していることをユーザーに気づかれないことです。 ありがとうございました。

すると、全ての回答が全文表示されます。

専門家に質問してみよう