1

今天下午我在最新版本的 Opera 中的 Web 应用程序中遇到了一个错误。

通常,可以通过赋予其属性来从标记的选项卡索引流中删除元素:

tabindex="-1"

这意味着当有人来到页面并开始点击他们的“tab”键时,他们将遍历文档中的锚点/输入,但那些分配了 -1 的元素将被忽略。

但是,Opera 的空间导航流程仍然允许用户通过键盘访问这些元素。

有没有人知道从 Opera 的空间导航流中删除元素的另一种方法,就像在其他浏览器中使用 tab 键文档遍历的元素一样?

具体来说:通过 Opera 而不是输入来移除锚点。

下面的标记给出了一个基本示例。在非 Opera 浏览器中,您可以使用 tab 键浏览列表,但它会跳过链接 3、4 和 7,因为它们设置了 tabindex = -1。在使用空间导航(Ctrl+向下/向上箭头)的 Opera 中,它仍然会专注于这些链接。

<html>
    <head>
        <style>
            :focus{border: 1px dashed green}
        </style>
    </head>

    <body>
        <ul>
            <li><a href="#">Link 1</a></li>
            <li><a href="#">Link 2</a></li>
            <li><a href="#" tabindex="-1">Link 3 (tabindex -1)</a></li>
            <li><a href="#" tabindex="-1">Link 4 (tabindex -1)</a></li>
            <li><a href="#">Link 5</a></li>
            <li><a href="#">Link 6</a></li>
            <li><a href="#" tabindex="-1">Link 7 (tabindex -1)</a></li>
            <li><a href="#">Link 8</a></li>
            <li><a href="#">Link 9</a></li>
        </ul>
    </body>
</html>
4

3 回答 3

2

我找不到这样做的好方法。可以做一个丑陋的黑客攻击,<a onfocus="document.moveFocusDown()" tabindex="-1">但我不推荐它,因为没有一个好的方法来确定用户是想上升还是下降..好吧,你可以听 keyup 并从那里做tabindex=-1 元素被聚焦,键是向上/向下箭头,我猜..

我建议你报告一个错误,说 spatnav 应该尊重 tabindex="-1" - IMO 你的代码原样很好,在 Opera 方面改变它是有意义的。一旦您报告了该错误,我很高兴向正确的开发人员大方向踢该错误。(我在 Opera 从事测试和 QA 工作)。

于 2012-03-26T18:06:58.147 回答
1

您可能知道,Opera的键盘导航类型与大多数浏览器不同。这实际上使得使用键盘导航非常容易进行导航。

现在,回到你的问题......它适用于我在 Opera 10.61 1250 (Windows 7) 中。以下是我的示例页面:

<html>
<head>
</head>
<body>
<input type="textbox">
<input type="textbox" style="display:none">
<input type="textbox" tabindex="-1">
<input type="textbox">
</body>
</html>

当我点击标签时,第二个和第三个输入被跳过。

如果这与您所拥有的不同,请发布代码示例。

于 2012-03-26T13:32:36.427 回答
1

我对这个问题的解决方案是将 href 属性缓存为数据- 对于每个不应包含在焦点循环中的链接,然后当链接可以再次接收焦点时,我从缓存的数据中恢复 href-。

http://jsfiddle.net/majornista/5pbFz/46/

于 2012-07-26T00:39:07.393 回答