ソース画像が見つからない場合、テーブルのセルに代替画像を表示する必要があります。現在、そのために以下のコードが使用されています。
cell.innerHTML="<img height=40 width=40 src='<%=request.getContextPath()%>/writeImage.htm' onError='ImgErrorVideo(this);'>"
function ImgErrorVideo(source){
source.src = "video.png";
source.onerror = "";
return true;
}
問題は、上記のソリューションがInternet Explorerで機能しているが、Mozillaでは機能していないことです。
すべてのブラウザで動作するソリューションを教えてください。
これはとても素敵で短いと思います
<img src="imagenotfound.gif" alt="Image not found" onerror="this.src='imagefound.gif';" />
しかし、注意してください。 onerrorイメージ自体がエラーを生成すると、ユーザーのブラウザーは無限ループに陥ります。
EDIT無限ループを回避するには、onerror
を一度に削除します。
<img src="imagenotfound.gif" alt="Image not found" onerror="this.onerror=null;this.src='imagefound.gif';" />
this.onerror=null
を呼び出すと、onerrorが削除され、代替画像の取得が試行されます。
NEW jQueryの方法を追加したいのですが、これが誰にも役立つ場合は。
<script>
$(document).ready(function()
{
$(".backup_picture").on("error", function(){
$(this).attr('src', './images/nopicture.png');
});
});
</script>
<img class='backup_picture' src='./images/nonexistent_image_file.png' />
悪い画像を表示しようとする場合に、バックアップ画像に読み込むimgタグにclass = 'backup_picture'を追加するだけです。
私のクエリの解決策があります:
私はこのようなことをしました:
cell.innerHTML="<img height=40 width=40 alt='' src='<%=request.getContextPath()%>/writeImage.htm?' onerror='onImgError(this);' onLoad='setDefaultImage(this);'>"
function setDefaultImage(source){
var badImg = new Image();
badImg.src = "video.png";
var cpyImg = new Image();
cpyImg.src = source.src;
if(!cpyImg.width)
{
source.src = badImg.src;
}
}
function onImgError(source){
source.src = "video.png";
source.onerror = "";
return true;
}
これにより、すべてのブラウザで機能します。
よろしくお願いします
PHPソリューションを開いている場合:
<td><img src='<?PHP
$path1 = "path/to/your/image.jpg";
$path2 = "alternate/path/to/another/image.jpg";
echo file_exists($path1) ? $path1 : $path2;
?>' alt='' />
</td>
////編集OK、これはJSバージョンです:
<table><tr>
<td><img src='' id='myImage' /></td>
</tr></table>
<script type='text/javascript'>
document.getElementById('myImage').src = "newImage.png";
document.getElementById('myImage').onload = function() {
alert("done");
}
document.getElementById('myImage').onerror = function() {
alert("Inserting alternate");
document.getElementById('myImage').src = "alternate.png";
}
</script>