私は次の問題があります。私は、コンポーネントload with following props loadContextを持っているとしましょう。スクリーンリーダーが反応成分のhtml要素を読み取っていません
通常、「読み込み中」というテキストのボタンがあり、クリックするとスピナー(読み込みコンポーネント)が表示され、次のコンテンツがWebページに読み込まれます。
しかし、このコードは単純化されたバージョンであり、ボタンにはスピナーが含まれています。スクリーンリーダーは<button>
と<a>
のhtmlタグを読み取りますが、ローディングコンポーネントはありません。
<button>
<a href="#">
<Loading loadContext="browser is loaded context" />
</a>
</button>
ロードコンポーネント:
export default class Loading extends React.Component {
static get propTypes() {
return {
loadContext: React.PropTypes.string.isRequired,
};
}
shouldComponentUpdate() {
return false;
}
render() {
const els = [];
if(this.props.loadContext) {
els.push(<span role="status" key="read-context" className="loader-context-hidden"> {this.props.loadContext}</span>);
}
els.push(<div className="loading__inner" key="loading__inner"></div>);
const maybeDelay = (children) => {
if (typeof this.props.delay === 'number') {
return (
<Delay wait={this.props.delay}>
{children}
</Delay>
);
}
return children;
};
return maybeDelay(
<div className={[ 'loading' ].concat(extraClassNames).join(' ')}>
{els}
</div>
);
}
}
私が何をしたい:ユーザーがボタンをクリックした場合、スクリーンリーダーは、spanタグで渡された小道具loadContextからテキストを読み込みます。
prop loadContextのテキストを含むspanタグには、loader-context-hidden(つまり、CSSファイルのvisibility:hidden
を意味します)というクラスがあります。
レンダリングロードコンポーネント:
<Loading loadContext="the browser is loading new context">
<div className="loading"
<span key="read-context" role="status" className="loader-context-hidden">{this.props.loadContext} </span>
<div key="loading_inner" className="loading__inner"> </div>
</Loading>
質問:はどのように私はスクリーンリーダーがロードコンポーネントに見て達成することができますし、spanタグ内のテキストを読みます。私はアリアからrole = "status"を使う必要があります。
感謝を:) – Morten