モーダルが開いているときにモーダルにフォーカスを設定するアクセシビリティ要求に準拠しようとしています。モーダルを開くリンクのon clickイベントでは、モーダル内のリンク要素にフォーカスを設定しようとしています(モーダルは、ページ全体が読み込まれても表示されず、モーダルのリンク要素もhref値)。しかし、私は焦点を変更するように見えることはできません。私は文書のkeydownイベントでそれを行うことができます。これは、クリック時の矛盾があると私に思います。フォーカスをクリックしたばかりのものから離れて設定することとの間に、既知の競合はありますか?回避策はありますか?メインページクリックイベントと設定フォーカスの競合ですか?
リンク:(ハンドルバーを使用して、関連するとにかく含む場合はわからない)モーダルで
<li id="country-selector" class="country-selector">
<a alt="Country Selector" href="#"><img src="../assets/images/countries/nz.png" alt="New Zealand flag"> New Zealand</a
</li>
リンク:
<li class="cs-region {{#if @first}}active{{/if}}">
<a href="#cs-{{slug}}" class="cs-tabs__link" {{#if @first}}id="cs-countries__first-focus" {{/if}}>{{region}}</a>
</li>
として出てくる:
<li class="cs-region active">
<a href="#cs-europe" class="cs-tabs__link" id="cs-countries__first-focus">Europe</a>
</li>
最初のリンクは
です。ここで
は私のJSです:私はクリックのイベントに同様の問題のためのプロジェクトに別の場所でそれらを使用するが、ちょうどいませんでしたけれども
$('#country-selector').on('click', function(e) {
//Accessibility; make the modal keyboard navigable
var modalParent = document.getElementById('cs-countries');
if ($.contains(modalParent, document.activeElement) !== true) {
//tabbed outside modal, so reset focus
console.log("activeElement is outside modal: ", document.activeElement);
document.getElementById('cs-countries__first-focus').focus(); //native js method
$('#cs-countries__first-focus').focus(); //jquery method
console.log("after set: ", document.activeElement);
} else {
console.log("activeElement is inside modal: ", document.activeElement);
}
});
どちらもjQueryのまたはネイティブJSの方法は、動作します。メインページ要素の残りの部分をタブで移動した後にモーダルにタブを移動することは可能ですが、タブ移動するときにフォーカスを設定できますが、モーダル内の要素からフォーカスを始める必要があります。
側の質問:あなたは、クエリ場合は、最初にachiveたいですか?私の目では '== false'と'!= true'は同じことをします。または私は間違っていますか? – reporter
私はそれが単なる個人的な習慣だと思いますか?私はすべてを真実の面で書く傾向があります。それは精神的な体操が少なく、私はエラーを少なくします。 –