フレームのlongdesc属性が無効です
WAI / WCAG 1.0 優先度2 チェックポイント 12.2
 
 
概要

Webページに、有効ではないlongdesc属性のあるframeset要素およびframe要素があります。

 
 
修正方法

longdesc属性がすでにあるので、フレームに長文になる説明が必要なようです。しかしながら、そのlongdesc属性値が有効ではありません。
有効なlongdesc属性値は、以下に挙げる条件をすべて満たしたものです。:

  1. 空 ("") ではない。
  2. スペースのみ (" ") ではない。
  3. リンク先のファイルが空やスペースのみではない。
  4. リンク先のファイルが存在して、(X)HTMLソースコードが記述されている。
  5. リンク先のファイルにHTTP/FTPプロトコルでアクセスできる。

longdesc属性を用いたソースコード例は、"解説" を参照してください。

 
 
解説

フレームを用いると、情報およびナビゲーション部分をグループ化して、決まったレイアウトにして表示させることができます。しかしながら、支援技術(音声ブラウザ、スクリーンリーダー、テキストブラウザ)の中には、その視覚的なレイアウトを用いることのできないものがあります。そういった支援技術は、他のフレームに関する説明がない状態で、各フレームをそれぞれ別々にレンダリングします。ユーザーは、他のフレームおよびそのコンテンツの存在に気づくことすらできません。それゆえ、ユーザーがフレーム間の関係を理解できるような説明を各フレームの中で提供することが重要なのです。

"トップ"、"左下" のようなタイトルがフレームのtitle属性値として記述されていることがよくありますが、これでは説明が不十分ですし、ユーザーはそのフレームと他のフレームとの関係を理解することができません。

以下のHTMLソースコード例を考えてみてください( HTML Techniques for Web Content Accessibility Guidelines 1.0 [http://www.w3.org/TR/WCAG10-HTML-TECHS/#frame-text-equivalent] の一部を改変)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
  <head>
    <title>今日のニュース - 日本新聞</title>
  </head>

  <frameset cols="10%,*,10%">

  <frameset rows="20%,*">
    <frame src="promo.html" name="promo" title="おすすめ">
    <frame src="sitenavbar.html" name="navbar"
       title="メニュー" longdesc="frameset-desc.html#navbar">
  </frameset>

  <frame src="story.html" name="story" title="ニュース - 本文"
     longdesc="frameset-desc.html#story">

  <frameset rows="*,20%">
    <frame src="headlines.html" name="index" title="その他の
      ニュースの目次" longdesc="frameset-desc.html#headlines">
    <frame src="ad.html" name="adspace" title="広告">
  </frameset>

  <noframes>
    <p><a href="noframes.html">ノンフレーム版</a></p>
    <p><a href="frameset-desc.html">フレームの説明</a></p>

  </noframes>

  </frameset>
</html>

frameset-desc.html は、以下のようなコンテンツです。

#Navbar - このフレームには、<a href="sitenavbar.html">このサイト
          の主要コンテンツ</a>へのリンクがあります。海外ニュース、
          国内ニュース、地方ニュース、技術ニュース、そして、エンター
     テインメント・ニュース、などです。

#Story  - このフレームには<a href="story.html">ニュースの本文</a>が
     表示されます。

#Index  - このフレームは、そのコーナー内のその日の
          <a href="headlines.html">主なニュースの目次</a>です。

noframe要素は、ユーザーがフレームをサポートしていない特別なブラウザ(例えば、PDAや携帯電話のブラウザ)を使用しているときに役に立ちます。