「HTML5プロフェッショナル認定試験レベル2スピードマスター問題集 P212 問5-22」より。
1.ユーザーが選択した画像ファイルをimg要素に設定して表示する。
2.ブラウザを閉じた後に再度同一ページにアクセスした際は、選択した画像でデータを取り出してimg要素に表示させる。
<input type="file" id="uploader"> <img src="no-image.png" alt="icon" id="icon">
window.addEventListener("load", function () { var icon = localStorage.getItem("icon"); if (icon) { document.querySelector("#icon").src = icon; } }); document.querySelector("#uploader"). addEventListener("change", function (){ var file = document.querySelector("#uploader").files[0]; var reader = new FileReader(); reader.onload = function () { document.querySelector("#icon").src = reader.result; localStorage.setItem("icon", reader.result); }; reader.readAsDataURL(file); });
「自分なりの解釈」
(1) ブラウザを閉じた後に再度アクセス。
window.addEventListener("load",
(2) Web Storageは同一オリジンにのみ参照可能な機能を利用して、
if文と併せて同一ページにアクセスしているかどうかを検証している。
var icon = localStorage.getItem("icon");
if(icon) {}
(3) 選択した画像データを取り出してimg要素に表示させる。
var icon = localStorage.getItem("icon");
document.querySelector("#icon").src = icon;
(4) ユーザーが選択。
document.querySelector("#uploader").
addEventListener("change",
(5) input要素からファイルを取り出している。
var file = document.querySelector("#uploader").files[0];
(6)ユーザーが選択した画像ファイル。
var reader = new FileReader();
(7)ユーザーが選択した画像ファイルを表示している。
document.querySelector("#icon").src = reader.result;
(8)画像ファイルをlocalStorageに保存している。
localStorage.setItem("icon", reader.result);
(9)ブラウザを閉じた後も利用するため、画像ファイルをreadAsDataURLとして読み込む。
reader.readAsDataURL(file);
回答2件
あなたの回答
tips
プレビュー