为什么<img/> alt属性并不总是正确显示

时间:2010-05-28 12:33:01

标签: javascript html image alt-attribute

所以我有这个php脚本输出一个html表,其中包含一些文件的数据(如文件名,文件大小等等)

我有这个javascript函数,当你悬停属于“预览”类的标签时显示图片。例如,如果文件名为:somePic.jpg,当您将somePic.jpg悬停在表格中时,图片将显示在鼠标旁边。

现在不是所有这些文件都是图片,有些是.mp3,所以当你悬停它们时,javascript无法显示图片。 为了处理这种情况,我添加了标签(由javascript函数生成),alt属性:alt ='预览不适用于此类内容。'

这是我的问题,有时它有效,但有时却不行! 有时你开始悬停.mp3链接,并显示alt属性,然后你悬停一张图片,显示图片,然后你再次悬停.mp3,并且不再显示alt,但是“破碎的图像”图像(显示小红十字)代替......

当然,我可以解析文件名并检测它何时是mp3,然后处理案例,但我认为alt属性是为了实现这一目标...但它有错误......

有什么想法吗?有没有人遇到过这个问题?

3 个答案:

答案 0 :(得分:8)

您好像混淆了alt属性和title属性。

alt属性是img特定的属性,用于指定在图像不能呈现的情况下要呈现的替代内容。 title是一个常规属性,用于在将鼠标悬停在元素上时提供工具提示。

一些损坏的UA 咳嗽 IE 咳嗽alt视为title图像;是混乱的根源。

答案 1 :(得分:4)

通常alt用于禁用图像,而不是作为错误条件的后备。虽然IMO是一个理想的功能,alt文本在错误条件下显示,标准并没有说它必须:

  

对于无法显示图像,表单或小程序的用户代理,此属性指定备用文本。

确实浏览器行为会有所不同。 WebKit(Safari,Chrome)只会显示损坏的图像图标,而不会显示alt文本; IE尝试使用图像图标(经常显示效果不佳)在框内渲染alt文本。

因此,您不应该依赖于错误时显示的替代文字。

  

当然,我可以解析文件名并检测它何时是mp3

是的,我认为你必须这样做。不是说在一般情况下这是可能的,因为文件名/ URL扩展可能与实际文件类型无关。但是,如果您自己控制所有URL,则可以保证所有MP3都被称为...mp3

答案 2 :(得分:1)

如何让PHP检测文件类型,让它只在图像上内嵌javascript。

您还应该查看FireBug并查看将鼠标悬停在图像上时发生的情况。