【问题标题】:Firefox (via jQuery) reports wrong height for image without src attributeFirefox(通过 jQuery)报告没有 src 属性的图像高度错误
【发布时间】:2012-07-01 11:17:54
【问题描述】:

http://jsfiddle.net/2N854/

html:

<img alt="test" width="100" height="100">

javascript:

alert($('img').height());

在大多数浏览器 (chrome) 上,警报显示为“100”,正如人们所期望的那样。在 Firefox 上,它没有。它“有帮助地”将 img 转换为如下所示的内容:

<div>test</div>

.. 并报告它的高度——在我的例子中是“19”。我可以通过在我检查高度之前分配一个占位符 src 来解决这个问题,这样就可以了。

我并没有真正忘记 src 属性,而是我正在客户端计算它。

我想我的问题是 - 有什么方法可以禁用这个 firefox 的“帮助”吗?

【问题讨论】:

  • 如果您将src 分配给 img 标签,它将按预期工作。 src 标记是必需的,因此没有任何标准定义浏览器在缺少它时会做什么。
  • 即使有(公认的 404)src 属性,firefox 也会报告错误的高度:jsfiddle.net/2N854/3
  • 你用实际图片试过了吗?您真的关心图片链接断开时的行为吗?
  • 是的,@SamDufel,这就是问题的重点。正如我在 Q 中所说:“我可以通过在我检查高度之前分配一个占位符 src 来解决这个问题,这没问题。”把它当作一个理论问题。变通方法比比皆是。我正在努力寻找最干净的解决方案——我真的很喜欢 Zoltan 的解决方案。我刚刚做了另一项测试,表明如果 FF 没有机会加载图像,它将报告正确的计算大小。只有在它注意到图像是 404 之后,它才开始“有帮助”。

标签: jquery html image height src


【解决方案1】:

是的,您可以将 display: inline-block 分配给您的图像 - http://jsfiddle.net/2N854/1/ 并且 FF 会正常运行 :)

【讨论】:

    【解决方案2】:

    这不完全是您问题的答案,但您不能只使用$('img').attr('height') 代替吗?

    【讨论】:

    • 那行不通,因为我有时使用 css 来覆盖 height 属性,我想要计算的高度。
    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多