나는 react와 react-modal을 사용하여 웹 사이트에서 오버레이를 만듭니다. 이 오버레이는 다양한 요소와 양식 (아래 개요)을 포함합니다. 나는 Tab 키를 사용하여 양식을 통해 사용자를 안내 할 수 있기를 원합니다. 외양 순으로 tabbable이되도록 필요한 요소에 tabindex=0
을 할당했습니다.크롬에서 작동하지 않는 Tabindex (React 앱)
내 문제는 : Firefox에서 작동하는 동안 Chrome (버전 61.0.3163.100)에서 작동하지 않습니다. DOM 트리 위로 어떤 요소가 보이지 않거나 높이/너비가 0이면이 문제가 발생한다고 읽었습니다. 수정하기 위해 스타일을 변경했지만 효과가 없습니다.
<div class="ReactModalPortal">
<div data-reactroot="" class="ReactModal__Overlay" style="position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px;">
<div class="ReactModal__Content" tabindex="-1" aria-label="Questionnaire" style="position: absolute; top: 0px; left: 0px; right: 0px; height: 100%; background: transparent none repeat scroll 0% 0%; overflow: auto;">
<!-- Some other stuff and nested elements -->
<div id="...">
<form>
<input tabindex="0">
<button tabindex="0">
</form>
</div>
</div>
</div>
상위 요소 중 하나를 볼 수있는 바와 같이 tabindex="-1"
있다. Chrome에서 inspect 함수를 통해 또는 JS와 프로그래밍 방식으로 변경하는 경우에도 문제가 계속 발생합니다 (또는 요소가 처음에이 색인으로 렌더링 된 경우 차이가 발생합니까?).
업데이트
나는 뭔가 다른 문제를 일으키는 것을 깨달았다. 내 모달의 루트 노드에있는 CSS 속성 initial: all
을 사용하여 외부의 모든 것으로부터 내부 CSS를 보호했습니다. 어떤 이유로 이것이 tabindex가 작동하지 못하게합니다. 이해를 도울 수 있다면 나는이 현상금에 보상 할 것이다. 내 해결 방법은 all: initial
을 사용하지 않고 있습니다 (IE와 호환되지는 않지만 실제로 잘 알고있는 대안이 없습니다).
입력, 버튼 등과 같은 요소는 기본적으로 포커스가 가능합니다. 'tabindex'를 제공 할 필요가 없습니다. –
힌트를 보내 주셔서 감사합니다. 나는 이것이 필수는 아니지만 내 문제는 그것이 작동하지 않는다는 것을 알고있다. 일반적으로 탭을 통해 아무 것도 작동하지 않습니다. tabindex는 강제로 시도했지만 도움이되지 않았습니다. – Gegenwind
크롬 62를 사용하고 있으며 저에게 적합합니다. https://codesandbox.io/s/qzoz5mqxx9 –