【问题标题】:Is there a JavaScript method to duplicate Focus-on-next-element (Tab) behavior?是否有 JavaScript 方法可以复制 Focus-on-next-element (Tab) 行为?
【发布时间】:2019-07-23 16:43:27
【问题描述】:

我想根据浏览器自己对哪个元素是下一个可聚焦元素的计算来更改 DOM 中的焦点。

我明白...

  • 在大多数浏览器中,JavaScript 无法触发按键(请参阅 https://stackoverflow.com/a/32429197/1766230),因此我们无法触发 Tab 键以转到下一个焦点元素(我们也不想因为按键事件可能被覆盖)。
  • 我们可以编写一些代码来查找所有链接/输入/等,找到当前关注的一个,并在下一个上触发 focus。 ...但这似乎只是在复制浏览器中本地的逻辑。

我的问题是:我们能否利用浏览器自己的逻辑来确定下一个可聚焦元素并聚焦它?

【问题讨论】:

    标签: javascript browser cross-browser focus


    【解决方案1】:

    这个不需要 JS。

    你试过属性tabindex吗?

        <input type"text" tabindex="1">
        <input type"text" tabindex="3">
        <input type"text" tabindex="2">
        <input type"text" tabindex="5">
        <input type"text" tabindex="4">
        <input type"text" tabindex="7">
        <input type"text" tabindex="8">
        <input type"text" tabindex="6">

    参考我的source,您也可以将它用于&lt;a&gt;&lt;textarea&gt;&lt;select&gt;&lt;button&gt; 元素。

    如果此答案不能满足您的问题/需求,请告诉我。

    【讨论】:

    • 这没有回答问题。我希望能够运行 JavaScript 来改变这些元素之间的焦点。
    • https://stackoverflow.com/questions/7208161/focus-next-element-in-tab-index 怎么样?特别是onfocusout 事件可能很有用。在另一个元素失去焦点后,您可以.focus() 任何可聚焦元素。
    • 仅编写一些 javascript 来复制浏览器中已经存在的逻辑(例如在您链接的答案中)的另一个问题是,有一些浏览器和操作系统设置会改变 Tab 有效。例如,在 Mac 上,有一个“全键盘访问”系统首选项会影响 Firefox 在元素之间的循环方式,而在 Safari 中,有一个浏览器首选项可以做到这一点。我希望能够像浏览器一样调用处理所有这些考虑因素的方法。
    猜你喜欢
    • 2020-04-19
    • 2019-10-02
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2011-04-09
    • 2021-07-19
    相关资源
    最近更新 更多