2011-03-22 31 views
66

源文件无效的图像在Firefox中显示替代文本,但在Chrome中不显示,除非调整图像的宽度。如何在Chrome中显示图像的替代文本

<img height="90" width="90" 
    src="http://www.google.com/intl/en_ALL/images/logos/images_logo_lg.gif" 
    alt="Image Not Found"/> 

如何显示图像的替代文字?

+0

您正在使用哪个版本的chrome?因为,根据http://code.google.com/p/chromium/issues/detail?id=16734,这应该已经修复。 – 2011-03-22 03:58:32

+0

这似乎仍然是Chrome 29(2年以上)的问题!除非元素的宽度足够宽以在整行中显示替代文本,否则替代文本不会显示!? – MrWhite 2013-09-02 10:20:11

+0

...和元素需要有一定的高度。我的测试至少44px。 – MrWhite 2013-09-02 11:00:21

回答

77

如果我是正确的,这是webkit中的一个错误(根据this)。我不确定是否有很多事情可以做,对于弱的答案感到抱歉。

但是,您可以使用一项工作。如果您将title属性添加到您的图像(例如title="Image Not Found"),它将起作用。

+1

我试过title =“xyz”,但没有为我工作 – Girish 2013-03-22 16:17:30

+4

您可能需要添加高度和宽度:http://jsfiddle.net/AAyz4/ – Prisoner 2013-03-22 16:41:59

+0

@Prisoner,,而不是。宽度和高度没有区别。此外,src不应该是空的或者被省略,实际上它绝不是(这是你的例子工作的唯一原因)。 – 2014-06-05 05:07:20

22

您可以使用title属性。

<img height="90" width="90" 
src="http://www.google.com/intl/en_ALL/images/logos/images_logo_lg.gif" 
alt="Google Images" title="Google Images" /> 
4

使用title属性,而不是ALT

<img 
    height="90" 
    width="90" 
    src="http://www.google.com/intl/en_ALL/images/logos/images_logo_lg12.gif" 
    title="Image Not Found" 
/> 
+0

请解释为什么使用title属性代替alt – sandeep 2011-03-22 04:10:55

+2

我们必须同时使用title和alt来实现浏览器兼容性,因为不同的浏览器在这种情况下考虑不同的属性title/alt – 2011-03-22 04:30:18

+0

@Harsh yeah你right.actually我正在测试谷歌浏览器我根据那个帖子发布代码,但我们必须同时使用多个浏览器。 – Sukhjeevan 2011-03-22 04:38:51

4

是的,这是一个问题在WebKit和也报道了铬:http://code.google.com/p/chromium/issues/detail?id=773 它的存在,自2008年以来...,仍然没有固定的!

我正在使用一段javacsript和jQuery来解决这个问题。

function showAlt(){$(this).replaceWith(this.alt)}; 
function addShowAlt(selector){$(selector).error(showAlt).attr("src", $(selector).src)}; 
addShowAlt("img"); 

如果你只想要一个某些图像:

addShowAlt("#myImgID"); 
+0

我不知道为什么我在Chrome中仍然遇到这个问题,你会认为这将是一件重要的事情来解决,但你的代码工作一旦包装在domready区块中,谢谢 – Kzqai 2012-10-17 16:47:07

+0

你可以提供你的解决方案吗? – 2015-01-16 15:41:39

+0

这个错误似乎在2016年仍然存在!你的JavaScript解决方案可以“转化”为Chrome扩展或boomarklet即时-激活? – jumpjack 2016-02-24 08:45:58

3

这里是jQuery的一个简单的解决方法。您可以将其作为用户脚本实施,以将其应用到您查看的每个页面。

$(function() { 
    $('img').live('mouseover', function() { 
    var img = $(this); // cache query 
    if (img.title) { 
     return; 
    } 
    img.attr('title', img.attr('alt')); 
    }); 
}); 

我也实施这是一个Chrome扩展名为alt。因为它使用jQuery.live,它也适用于动态加载的内容。我已经停用了此扩展程序并将其从Chrome商店中删除。

-2

我用这个,它的工作原理与PHP ...

<span><?php 
if (file_exists("image/".$data['img_name'])) { 
    ?> 
    <img src="image/<?php echo $data['img_name']; ?>" width="100" height="100"> 
    <?php 
}else{ 
    echo "Image Not Found"; 
}>? 
</span> 

本质是什么代码正在做,正在检查文件。我们的数组将使用$data变量,然后实际进行所需的更改。如果没有找到,它会抛出一个异常。

1

各种浏览器(错误)以各种方式处理此问题。使用标题(旧的IE'标准')并不特别合适,因为title属性是鼠标悬停效果。上面的jQuery解决方案(Alexis)似乎在正确的轨道上,但我不认为这个'错误'发生在可能被捕获的地方。我已经在SRC与自身替换,然后捕捉错误取得了成功:

$('img').each(function() 
{ 
    $(this).error(function() 
    { 
     $(this).replaceWith(this.alt); 
    }).attr('src',$(this).prop('src')); 
}); 

这一点,因为在亚历克西斯的贡献,具有去除失踪IMG图像的好处。

相关问题