2016-10-19 2 views
3

私はさまざまな記事にリンクするナビゲーションリストを作成しています。過去に私は、複数のli要素を含む単一のul要素を含むnav要素としてナビゲーションリストを定義しました。これらの要素はすべて、それぞれ独自のa要素で構成されています。WAI-ARIAリンクロールを使用して、任意の要素をハイパーリンクにすることはできますか?

私は思ったんだけど、a要素は、WAI-ARIA リンクrole属性で回避することができますか?

<nav role=listbox> 
    <ul> 
    <li role=link href=#foo> 
     Foo 
    </li> 
    </ul> 
</nav> 

WAI-ARIA勧告describes the link roleとして:

当然のことながら、li要素がhref属性が許可されていませんので、以下のブラウザで理解しやすいものに変換されることはありません

アクティブにすると、ユーザーエージェントがそのリソースにナビゲートする原因となる内部または外部リソースへの対話型参照。

それはと続き:

これは(そのようhrefの値を持つHTMLアンカーなど)ホスト言語でのネイティブリンクの場合、リンクをアクティブにすると、そのリソースに移動するためのユーザーエージェントを引き起こし。これがシミュレートされたリンクの場合、Webアプリケーションの作成者はナビゲーションの管理を担当します。

もちろん、私は単純なJavaScriptクリックハンドラを追加することができますが、ブラウザがそのリンク先を確認するのを妨げます。たとえば、Chrome、Edge、Firefoxでは、画面の左下に灰色のボックスが表示され、リンクが有効になっていることをユーザーに知らせるためにリンクが有効になります。私はこの記事では上記に含まましたリンクの上にマウスを移動、ユーザーがこの表示が表示されます:

Browser Link Location Hint

は、任意の追加要素を実装せずに、この機能が含まれるように、ブラウザを取得することが可能ですか?

+0

"当然、li要素はhref属性を許可されていません"何かXHTML 2.0 ... – BoltClock

+2

_ "追加機能を実装せずにこの機能をブラウザに組み込むことはできますか" " - そうではありません。あなたがどこかにリンクしたい場合は 'a'要素を使います。 – CBroe

+0

"簡単なJavaScriptクリックハンドラを追加できました" - これはキーボードユーザーにとってはうまくいきません。右クリック - 新しいタブで開くタブは機能しません。なぜここで ''を使用しないのですか?要素を追加することをためらっているのはなぜですか? – BrendanMcK

答えて

3

いいえ、WAI-ARIA linkの役割は説明的なものであり、スクリーンリーダーのようなデバイスを支援することを目的としています。機能を導入することはありません。問題のリンクがaの要素ではなく、javascriptによるシミュレートされたリンクである場合に特に役立ちます。

2番目の質問に答えるには、アンカータグにカーソルを合わせたときのリンクプレビューがブラウザのstatus barの一部です。デフォルトでは、ブラウザはjavascript経由でこれを操作させることはありません。なぜなら、これは主要なセキュリティ上の欠陥と考えられるからです。そうしないと、プレビューが正確であることを本質的に信じることはなく、悪意のあるリンクをクリックするように人々を欺くのは簡単です。

つまり、一部のブラウザでは、ブラウザの設定を変更するか、アドオンをインストールすることでこれを操作できます。これは、大部分のユーザーが変更を経験しないため、実際の実用的な目的はありませんが、唯一の方法と思われます。私はwindow.status pageでFirefoxのためのほとんどのドキュメントを見つけました。 window.status = 'www.fakeurl.com'を設定することができますが、を設定すると、dom.disable_window_status_changeの設定をfalseに設定してabout:configに設定する必要があります。

ステータスバーにテキストを表示する必要がある場合は、達成する唯一の方法はa要素です。経験則として、アプリでa要素をナビゲーションに使用できる場合は、常にa要素をナビゲーションに使用する必要があります。そして、CSS3では、あなたが望むもののように見えるようにそのアンカータグをスタイルすることができるので、あなたがそうすることができないほど多くのシナリオを想像するのは難しいです。

関連する問題