「role=text」にはフォーカス可能な子孫が存在すべきではない
修正方法
正しいマークアップソリューション
role="text"
「The」属性は、フォーカス可能な子孫を持たない要素に配置する必要があります。
<h1><span role="text">Hello <br/>World</span></h1>
誤ったマークアップソリューション
<span role="text">
<a href="/site.html">Not announced as link</a>
</span>
なぜ重要なのか
テキスト ノードがマークアップによって分割されている場合 (例: <h1>Hello <span>World</span></h1>
)、VoiceOverはそれを1つのフレーズではなく2つの別々のフレーズとして扱います。要素の周囲に role="text"
を追加すると、問題は解決します。ただし、要素とすべての子孫の役割もオーバーライドされ、すべてがテキスト ノードとして扱われます。子孫要素の1つもフォーカス可能である場合は、空のタブ ストップが作成されます。つまり、要素にタブ移動することはできますが、VoiceOverではその要素の名前、役割、または値が読み上げられません。
ルールの説明
role="text"
"Elements with"を持つ要素には、フォーカス可能な子孫があってはなりません。
仕組みについて (簡単に言うと)
role="text"
"elements with"を持つすべての要素をチェックして、フォーカス可能な子孫がないことを確認します。