2016-12-23 2 views
0

イメージがパスにない場合は、代替テキストのみを表示します。それはFirefoxで正しく表示されていますが、クロムには壊れた画像リンクと代替テキストが表示されます。私はjqueryのイメージタグ内のテキストのみを表示html

<script type="text/javascript"> 
    function hideImage(img) 
{ 
    img.style.display = "none"; 
} 
</script> 

を試してみました。この

ようにすることを試みたが、それもaltテキストは表示されません。これによってaltテキストを表示する方法。

答えて

4

img要素の読み込みに失敗したときに発生するerrorイベントにフックできます。 replaceWith()に電話すると、altというテキストが表示されます。これを試してみてください:

$('img').on('error', function() { 
 
    $(this).replaceWith(function() { 
 
    return $(this).prop('alt'); 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Here's an image that won't load: <img src="doesnt_exist.jpg" alt="foo bar" />

+0

しかし、Chromeでは動作しません。壊れた画像とテキストが表示されます。 – user3368088

+0

これはChromeで正常に動作します - これは私が今使っているものです。コードにエラーがないかコンソールで確認してください。 –

3

CSSソリューションを - attr()表現を使用して、古いブラウザ


に互換性がない場合があります。表示されるデフォルトの代替テキストを置き換えることができます。デフォルトのテキストの上に擬似要素を配置し、それを表示から隠すことができます。

img:after { 
 
    content: attr(alt); 
 
    font-size: 16px;  
 
    color: rgb(100, 100, 100); 
 
    display: block; 
 
    position: absolute; 
 
    z-index: 2; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: #fff; 
 
}
<img src="doesnt_exist.jpg" alt="No Image" />

クレジットStyling Broken Imagesに多くのクールなトリックがあります。

+1

これは純粋なCSSソリューションを見て非常にいいです! – ProDexorite

+0

@ProDexoriteありがとう.. –

+0

本当に素晴らしいソリューションですが、レガシーブラウザではうまくいかないことに注意してください:https://developer.mozilla.org/en/docs/Web/CSS/attr#Browser_compatibility –

関連する問題