【javascript 初心者】画像を非同期で読み込む方法を紹介します

非同期で画像を読み込む方法
非同期で画像を読み込みたい

という方向けの記事です。

 

ティロ

こんにちは、ティロといいます

プログラミング好きな理系大学生です

 

javascriptのコードはこんな感じです。

 

htmlではimg要素にはdata-src属性を指定しています。これでロードの際に画像が表示されなくなります。

処理の流れはまず新しく作ったMap(キーと値がセットになったもの)に取得したimg要素とdata-src属性を入れます。DOMContentLoadedは以下の通りです。

DOMContentLoadedイベントとは?

最初の HTML 文書の読み込みと解析が完了したとき、スタイルシート、画像、サブフレームの読み込みが完了するのを待たずに発生します。

引用:Window: DOMContentLoaded イベント – Web API | MDN

srcがあると通信されるため、removeAttributeでsrc属性を除去します。

loadイベントで読み込みが完了したときにforEach文で各imgを取り出し、Mapに保存した属性値をsrc属性に代入しています。これで画像が表示されます。

DOMContentLoadedイベントとloadイベントの違いはDOMContentLoadedはhtmlの文書や解析が終わったあと発火します。その時点では画像は読み込まれていません。一方loadイベントではページ内のリソース(画像等)の読み込み完了時に発火します。

Map.set(img, img.dataset.src)はmap.set(key, value)でキーで値を保存します。

参考書籍

javascriptのあらゆる技法が書かれています。

ティロ
パラパラ見ているだけで「javascriptってこんなこともできるの⁉」と楽しくなります