안녕하세요 @awesomerobot, 저는 코디(Cody)의 동료이자 접근성 엔지니어입니다. 문제를 진단하기 위해 저장소를 살펴봤습니다. 이미 알고 계실 수 있지만, 핵심 문제는 (1) 가려진(cloaked) 게시물의 내용이 스크린 리더에서 볼 수 없고, (2) 게시물이 PostStreamViewportTracker를 통해 사용자의 뷰 안에 있을 때만 가려짐이 해제된다는 점으로 보입니다.
잠재적인 해결책을 고안하면서, 두 가지를 최적화하고자 합니다: (1) 스크린 리더를 통해 각 게시물의 헤딩으로 탐색할 수 있도록 하고, (2) Discourse 저장소에 대한 변경 사항과 성능에 미치는 영향을 최소화하는 것입니다.
제가 권장하는 접근 방식은, 각 로드된 게시물에 대해 헤딩 탐색에 사용되는 의미론적 H2를 포함하는 경량 래퍼를 유지하고, 무거운 본문은 가려진 상태로 두는 것입니다. 이렇게 하면 보조 기술에 대한 헤딩을 안정적으로 유지하면서도 페이지 전체에 걸쳐 DOM을 부풀리지 않을 수 있습니다. 사용자가 헤딩 탐색을 통해 특정 게시물의 H2에 도달하면, 스크린 리더가 페이지 스크롤을 트리거하고, 이는 다시 게시물의 본문을 해당 위치에 가려짐을 해제합니다.
이 솔루션의 실행 가능성은 다음 게시물 청크가 로드되는 시점에 달려 있습니다. 선택적 개선 사항으로, 로드된 게시물 목록의 하단에 스크린 리더 전용 센티넬 헤딩인 “더 많은 게시물 로드”를 배치하는 것입니다(당신의 PR에서 제안된 "더 많은 로드 영역"과 유사). 이 헤딩이 뷰에 들어오거나 헤딩 로터에서 선택되면, 다음 청크가 로드되고 aria-live=polite 메시지를 통해 완료 사실이 공지됩니다.