【问题标题】:Remove HTML tag from tab order从标签顺序中删除 HTML 标记
【发布时间】:2018-11-21 18:49:57
【问题描述】:

在我的应用程序的标签循环中,<html> 标签占据了一个制表位。我希望从 Tap 循环中删除 <html> 标签。

我尝试将tabindex="-1" 添加到<html> 标记,但至少在IE11 上,这似乎并没有从选项卡循环中删除元素。如果document.activeElement === <html>,我已经接近使用 JS 旋转我自己的逻辑来“跳”到下一个可聚焦元素,但我想知道是否有更简单的方法。

该方案需要跨主流浏览器支持:IE11、Edge、FF、Chrome、Safari。

有什么想法吗?

【问题讨论】:

  • 你能提供更多代码吗?
  • 我不相信更多的代码会有用。它实际上只是将tabindex="-1" 属性添加到<html> 元素。
  • 很奇怪。您使用的是什么文档类型? (我假设是 HTML5?)这是在添加 tabindex="-1" 之前发生的吗?并且仅在 IE11 或 Chrome/FF 中?
  • @sir_thursday 我尝试了所有可能的方法来创建 HTML 文档,但制表符从未专注于 <html> 标记。你能提供一个最小的、可行的代码来复制这个问题吗?
  • 看这个例子可能对你有帮助:stackoverflow.com/questions/1987927/…

标签: javascript html


【解决方案1】:

我访问了 tabindex 属性的 HTML 规范 -> https://html.spec.whatwg.org/#the-tabindex-attribute

下面是第二段:

当属性被省略时,用户代理应用默认值。 (如果不禁用它或使其惰性,则无法使正在渲染的元素完全不可聚焦。)

正如明确提到的,使任何元素不可聚焦的唯一方法是禁用它或使其在 DOM 中不可见。

我仍在搜索,并将发布有关此的更新。

另外,我也尝试过复制这个问题,在IE上做不到。(没有尝试在其他浏览器上复制)。

更新 1:

我找到了difference in tabIndex between HTML4 AND HTML5

据说虽然 HTML5 允许在任何元素上添加 tabIndex 属性,但它可能没有任何效果。这也适用于 HTML 元素。我知道,我们如何知道 HTML 元素是否被聚焦?

【讨论】:

    【解决方案2】:

    根据我的简单研究,我发现你可以使用你可以使用tabindex="-1"

    W3C HTML5 规范支持负 tabindex 值。

    你也可以使用,它适用于大多数浏览器:

    element.removeAttribute('tabindex');
    

    我在 jquery 中找到了这种方式,但我不确定

    $('#yourelment').prop('tabIndex', -1);
    

    请查看这些链接以获取更多详细信息:

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      相关资源
      最近更新 更多