28 lines
994 B
JavaScript
28 lines
994 B
JavaScript
/* 家书 · 前端小助手(无框架,无构建步骤) */
|
|||
|
|
(function () {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
// 头像选好后即时预览,别等上传完才知道选错了
|
||
|
|
var fileInput = document.getElementById('avatar');
|
||
|
|
if (fileInput && window.FileReader) {
|
||
|
|
fileInput.addEventListener('change', function () {
|
||
|
|
var f = this.files && this.files[0];
|
||
|
|
if (!f) { return; }
|
||
|
|
var img = document.getElementById('avatar-preview');
|
||
|
|
if (!img) { return; }
|
||
|
|
var reader = new FileReader();
|
||
|
|
reader.onload = function (ev) { img.src = ev.target.result; };
|
||
|
|
reader.readAsDataURL(f);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 头像加载失败时换回内置剪影 —— 保证任何时候都不会出现破图
|
||
|
|
Array.prototype.forEach.call(document.querySelectorAll('img'), function (img) {
|
||
|
|
img.addEventListener('error', function () {
|
||
|
|
if (img.dataset.fallbackDone) { return; }
|
||
|
|
img.dataset.fallbackDone = '1';
|
||
|
|
img.src = '/assets/avatar-default.svg';
|
||
|
|
});
|
||
|
|
});
|
||
|
|
})();
|