【问题标题】:Why does firefox change align="center" to align="middle"?为什么Firefox将align="center"更改为align="middle"?
【发布时间】:2017-08-27 02:03:55
【问题描述】:

我知道img.aligndeprecated 甚至已经过时了,仍然...... Firefox 正在改变我的属性值。具体看例子

const img = document.querySelector("img");
console.log("img.align:", img.align);
<img src="http://www.gravatar.com/avatar" align="center" >

结果:

  • 铬:img.align: center
  • 火狐:img.align: middle

知道为什么 firefox 会更改属性的值吗? firefox还有其他属性值变化吗?

这对类似的代码有影响

document.querySelectorAll("img[align=center]")

在 Firefox 上失败(仅),任何使用相同选择器的 CSS 也会失败;以img[align=center] { ... } 为例。

可能相关:Can I add custom attribute to HTML tag?

【问题讨论】:

  • 很高兴知道但与我的问题无关
  • IMO 这是一个有趣的 (?) 事实,但不是一个好的 stackoverflow 问题。这里的人无法知道答案,除非他们是此功能的作者 => 基于意见
  • 真的吗? asking about quirksbrowsers 似乎是 Stack Overflow 上最常见的问题之一
  • 尽管如此,他们中很少有人询问设计决策背后的历史。他们中的大多数人只是对解决方法感兴趣。 (我原以为这些链接会指向个别问题,但实际上它们指向问题列表的事实说明了这一点。)

标签: html firefox


【解决方案1】:

知道为什么 firefox 会更改属性的值吗?

因为middle RFC 1866 (HTML 2.0)HTML 3.2HTML 4 中定义的正确值,而不是centerimg 元素上的 align 属性从来没有将 center 作为可能的值,因为 center 在历史上一直提到水平对齐(浮动),并且您不能将图像浮动在线。当时的其他实现,例如 IE,did 允许 center 作为可能的值,其含义与 middle 相同(参见 Stefan 的回答),所以我的猜测是 Firefox 提供互操作同时仍然通过对值进行别名来遵守标准。

我不清楚为什么 Chrome 不这样做。无论如何,出于渲染的目的,它似乎确实将center 视为middle。但是,如果通过重写值 Firefox 破坏了属性选择器,我会认为这是一个缺陷(尽管由于该属性已过时,他们可能不倾向于修复该缺陷)。

真正的问题是为什么MDN claims 唯一可能的值是leftrightjustifycenter。当然,DOM level 2 spec 包含对align 属性的更准确描述,尽管它没有列出可能的值,因为它们已经在 HTML 规范中列出。

【讨论】:

    【解决方案2】:

    html specification 不知道 img 标签(但对于其他标签)的 align 属性的值 center。但是,firefox 可能将 center 识别为值(而不是其他废话)并将其接受为 middle,因为 firefox 和可能的其他浏览器在其生命中的某个时刻已经这样做了这个rather ancient bug report

    【讨论】:

      猜你喜欢
      • 2020-08-31
      • 2015-01-17
      • 2010-10-18
      • 2019-12-23
      • 2021-05-09
      • 2013-10-15
      • 2012-06-06
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多