【问题标题】:What is the browser support for element.removeAttribute?element.removeAttribute 的浏览器支持是什么?
【发布时间】:2019-03-13 05:35:42
【问题描述】:

摘要/详细信息 HTML5 元素具有糟糕的浏览器支持。因此,我构建了a non-jQuery fallback 以使其在不受支持的浏览器(IE 和 Edge)中工作。这个后备使用 element.removeAttribute,但我怀疑浏览器对这个命令的支持。我在网上找不到明确的答案。我试过caniuse.comMDN web docs,但他们没有明确的答案。

我知道它适用于我的(更新的)Firefox 版本。谁有更多信息?

【问题讨论】:

  • 这是我在问题中提交的确切链接。它主要包含问号。
  • 表示支持未知或不稳定。 W3Schools 冲突并表示所有现代浏览器都支持它。 w3schools.com/jsref/met_element_removeattribute.asp
  • @daddygames — “我们不知道”与“别人说他们知道”并不冲突
  • @Quentin 我只是通过确认不同的来源有关于该主题的不同信息来支持 OP。但是,我倾向于 MDN 更准确,也就是说不能保证支持,如果可以的话,你应该测试特定的浏览器/版本。
  • @JoostS 我删除了我对这个问题的反对票。但是,我认为您不会得到比引用的文档更好的答案。 MDN 通常是公开的最新在线文档。

标签: javascript html cross-browser


【解决方案1】:

此方法在不同浏览器中的工作方式不一致。至少是BROKEN on MS Edge,在撰写本文时,MDN、W3schools 或 caniuse 均未提及其损坏情况。

基本上,当删除boolean attributes(例如selectedhidden)时,该方法会失败。以下将在 Edge 上失败:

someDiv.removeAttribute("hidden");

解决方法是在删除之前立即将属性设置为“false”。

someDiv.setAttribute("hidden", "false"); // "thanks" for the nonsense, MS
someDiv.removeAttribute("hidden");

这不是布尔属性应该如何工作的,但 Edge 需要它。鉴于 Microsoft 即将放弃 Edge,转而采用基于 Chromium 的替代方案,我们可以预期此错误将保持未修复,以及使我们的代码混乱多年的解决方法。

【讨论】:

  • 感谢 JoostS!从那以后,我在 caniuse 和 MDN 上都提出了关于这个问题的标志
猜你喜欢
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2011-06-15
  • 2014-12-31
  • 2011-04-25
  • 1970-01-01
相关资源
最近更新 更多