웹접근성을 준수하기 위해서는
모달을 띄웠을 때 띄운 모달 안에서 포커스가 이동하는 이른바 포커스트랩핑(focus trapping)이 되어야 한다.
function focusTrapping(_layer){
const focusableElements = 'a[href], area[href], input:not([disabled]), select:not(]disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]';
const layer = _layer;
const focusableContent = $(layer).find(focusableElements);
const firstFocusableElement = focusableContent[0];
const lastFocusableElement = focusableContent[focusableContent.length - 1];
$(layer).on('keydown', function(e){
let isTabPressed = e.key === 'Tab' || e.keyCode === 9;
if( !isTabPressed ){ return; }
if( e.shiftKey ){
if( document.activeElement === firstFocusableElement ){
lastFocusableElement.focus();
e.preventDefault();
}
}else{
if( document.activeElement === lastFocusableElement ){
firstFocusableElement.focus();
e.preventDefault();
}
}
});
}
'📁 Language > 🟨 Javascript' 카테고리의 다른 글
[Javascript] Object.keys() 객체 안 키값 개수 구하기 (0) | 2024.09.02 |
---|---|
[jQuery] 숫자 증가 애니메이션 (0) | 2024.08.29 |
[Javascript] 1000단위 ',' 표기 함수 (0) | 2024.08.29 |
[Javascript] 금액 단위 한글 변환 함수 (0) | 2024.08.29 |
[JavaScript] this와 $(this)의 차이점 (0) | 2021.08.01 |