今天下午我在最新版Opera中的网页应用程序中出现了一个错误。
通常,可以通过赋予属性来从标记的tab-index流中删除元素:
tabindex="-1"
这意味着当有人进入页面并开始点击他们的“标签”键时,他们将遍历文档中的锚点/输入,但是那些带有-1分配的元素将被忽略。
然而,Opera的空间导航流程仍允许用户通过键盘访问这些元素。
有没有人知道从Opera的空间导航流中删除元素的另一种方法,就像元素在使用tab-key文档遍历的其他浏览器中一样?
具体来说:通过Opera而不是输入来移除锚点。
下面的标记给出了一个基本的例子。在非Opera浏览器中,您可以使用Tab键浏览列表,但它会跳过链接3,4和7,因为它们设置了tabindex = -1。在Opera中使用空间导航(Ctrl +向下/向上箭头),它仍然会专注于那些链接..
<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>
答案 0 :(得分:2)
我找不到一个很好的方法来做到这一点。有可能像<a onfocus="document.moveFocusDown()" tabindex="-1">
那样做一个丑陋的黑客,但我不推荐它,因为没有一个好的方法来判断用户是想上升还是下降..你可以听取密钥和做如果一个tabindex = -1元素被聚焦并且键是向上/向下箭头,那我就猜它......
我建议你报告一个bug,说spatnav应该尊重tabindex =“ - 1” - IMO你的代码原样很好,在Opera方面改变它是有意义的。一旦你报告了它,我很乐意在正确的开发人员的大方向上解决这个问题。 (我在Opera工作测试和质量保证)。
答案 1 :(得分:1)
您可能知道,Opera比大多数浏览器都有different type of keyboard navigation。这实际上使用键盘导航非常容易导航。
现在,回到你的问题......它适用于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>
点击标签时会跳过第2和第3个输入。
如果这与您的不同,请发布代码示例。
答案 2 :(得分:1)
我对此问题的解决方案是将href属性缓存为数据 - 用于不应包含在焦点循环中的每个链接,然后当链接再次获得焦点时,我从缓存的数据中恢复href - 。< / p>