Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止HTML音频控件在选项卡键导航期间获得焦点?_Html_Google Chrome_Html5 Audio - Fatal编程技术网

如何防止HTML音频控件在选项卡键导航期间获得焦点?

如何防止HTML音频控件在选项卡键导航期间获得焦点?,html,google-chrome,html5-audio,Html,Google Chrome,Html5 Audio,我有一个HTML页面,其中有一堆HTML音频元素(带有启用的控件)与文本输入元素交织在一起。音频元素具有tabindex=“-1”,文本输入具有正tabindex。这不会阻止Chrome在进行TAB键导航时迭代6个控件元素 可能音频控件不受tabindex行为的影响:但如果不是: 可以禁止他们从键盘获得焦点吗(没有JavaScript;下面是我的JS解决方案)?我希望用户能够使用TAB仅迭代文本输入(并在必要时使用鼠标播放音频),这是一个众包场景,因此节省用户的工作量非常重要 根据@makusi

我有一个HTML页面,其中有一堆HTML音频元素(带有启用的控件)与文本输入元素交织在一起。音频元素具有tabindex=“-1”,文本输入具有正tabindex。这不会阻止Chrome在进行TAB键导航时迭代6个控件元素

可能音频控件不受tabindex行为的影响:但如果不是:

可以禁止他们从键盘获得焦点吗(没有JavaScript;下面是我的JS解决方案)?我希望用户能够使用TAB仅迭代文本输入(并在必要时使用鼠标播放音频),这是一个众包场景,因此节省用户的工作量非常重要

根据@makusium的评论,我提出了以下JavaScript解决方案:

onkeydown函数(evt)
{
const tab=evt.keyCode==9,shift=evt.shiftKey;
常量tabIndex=(document.activeElement | |{tabIndex:-1});
如果(选项卡)
{
const newTabIndex=shift?Math.max(0,tabIndex-1):tabIndex+1;
const newElem=document.querySelector(`[tabindex=“${newTabIndex}”`);
if(newElem)
newElem.focus();
返回false;
}
返回true;
}
文件。添加了监听器('keydown',onkeydown');

此链接可能会帮助您:谢谢。似乎manuall onkeydown处理是当前唯一的方法此链接可能会帮助您:谢谢。似乎manuall onkeydown处理是当前唯一的方法