Javascript を使用して画像をプリロードすることもできます。画像が読み込まれたら、添付します。失敗した場合は、フォールバックを提供するなど、何か他のことを行います。ここに、可能な解決策を示す JS コード スニペットがあります。
/**
* Tries to load an image and renders a fallback image if it fails.
* @param {string} srcImage The source of the image to load.
* @param {string} srcFallback The source of the fallback image.
*/
function loadImageOrFallback(srcImage, srcFallback) {
var image = new Image(),
timerFallback = null,
hasRenderedFallbackImage = false;
image.onload = function() {
if (timerFallback !== null) {
clear(timerFallback);
}
if (hasRenderedFallbackImage) {
// replace the fallback image
} else {
// append image to wherever you want
}
};
image.src = srcImage;
// since there is no way to detect an error when preloading the image,
// you can use a timeout function (here we are waiting 2 seconds)
timerFallback = setTimeout(function() {
var fallbackImage = new Image();
fallbackImage.src = srcFallback;
// append fallbackImage to wherever you want
hasRenderedFallbackImage = true;
}, 2000);
}
loadImageOrFallback('A_B_C.png', 'fallback.png');
JavaScript を使用してこれを確認するには、試行錯誤のアプローチに従います。タイムアウトにより、遅延も発生します。この状況をサーバー側で検出できれば、はるかに優れたものになります。
フォールバック イメージのレンダリング後にイメージが読み込まれる可能性があることに注意してください。そのため、フォールバック イメージが追加されたことを保存し、onload
コールバックでその値を確認します。
どのように使用するかを示すこの jsFiddleを用意しました。