从选项卡顺序中删除HTML标记

9
在我的应用程序选项卡循环中,<html>标签占据了一个选项卡停止位。我想要将<html>标签从选项卡循环中删除。
我尝试向<html>标签添加tabindex="-1",但至少在IE11上,似乎并没有将该元素从选项卡循环中移除。我快要使用JS自己编写逻辑来“跳过”下一个可聚焦的元素,如果document.activeElement === <html>,但我想知道是否有更简单的方法。
解决方案需要支持主要浏览器:IE11、Edge、FF、Chrome、Safari。
有什么想法吗?

2
你能提供更多的代码吗? - Pararera
我不认为增加更多的代码会有用。实际上只需要在<html>元素中添加tabindex="-1"属性即可。 - sir_thursday
非常奇怪。你使用的是什么文档类型?(我猜是HTML5?)在添加tabindex="-1"之前就发生了这种情况吗?只有在IE11中出现,还是在Chrome / FF中也有? - jacob.mccrumb
1
@sir_thursday,我尝试了所有可能的方法来创建HTML文档,但是无论如何都无法将焦点放在<html>标签上。您能否提供一个最小化、可行的代码来复制这个问题? - Dipen Shah
看看这个例子,可能会对你有所帮助:https://dev59.com/knI-5IYBdhLWcg3wKVA9#1987947 - DINA TAKLIT
2个回答

3

我查看了HTML规范中tabindex属性的相关信息: https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute

以下是第二段:

当省略该属性时,用户代理会应用默认值。(没有办法使正在呈现的元素完全不可聚焦,除非将其禁用或使其失效。)

正如明确指出的那样,使任何元素无法聚焦的唯一方法是将其禁用或从DOM中隐藏。

我仍在搜索中,将在此发布更新。

此外,我还尝试复制此问题,但在IE上无法复制。(未尝试在其他浏览器上进行复制)。

更新1:

我发现HTML4和HTML5之间tabIndex的区别

虽然HTML5允许在任何元素上添加tabIndex属性,但可能没有任何效果。这也适用于HTML元素。我可以知道如何确定一个HTML元素是否受到关注吗?


1

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

W3C HTML5规范支持负tabindex值。

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

element.removeAttribute('tabindex');

我发现用jQuery可以实现这个方法,但不确定。
$('#yourelment').prop('tabIndex', -1);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接