Re: providing a long description using the summary and details elements.

Steven Faulkner, Tue, 24 Aug 2010 12:15:12 +0100:
> remailing with example code sans extraneous role and tabindex code:

> an idea: using the summary /details elements to provide a long
> description for an image:
> 
>    - image goes in the <summary>
>    - long description in <details>

I would add <details role="img"> as a requirement, whenever <details> 
is used to represent an image. Justification below.

>    - use of longdesc attribute on image provides indication to browser/AT
>    that details/summary is being used for the specific purpose of 
>    providing a long description.
>    - longdesc attribute with URL value (longdesc="URL") provided for
>    backwards compatibility (suggest deprecated in HTML5)

I'll leave the deprecation problem till later ...

>    - longdesc attribute without an URL "longdesc" be specced as an
>    indicator that a long description is present when image is sole 
>    content of the summary element.

Making @longdesc a boolean like that, does not make sense to me, for 
several reasons. One thing is that it would go against how it is 
currently specced (and what about those bogus @longdescs out there?). 
But just as imporant: to rely on @longdesc like that, would be to not 
take advantage of <details role="img">, 

If the <details/> element has role="img", then everything outside the 
<summary/> element naturally becomes the long description of what is 
summarized in the <summary/> element. Hence, there would be no reason 
to introduce @longdesc as some kind of boolean signal - such a thing 
would only be redundant. (And sometimes even incorrect - imaging if 
both @alt and text outside the @alt makes up the <summary/> text.) 

Thus, the only valid use of @longdesc should be for backward 
compatibility for user agents which do not support the ARIA and 
<details>.
 
>  example code:
> 
> <details>
>   <summary ><img src="images/table.gif" alt="Average rainfall in
> millimetres by country and season." width="407" height="341"
> longdesc="details.html#table"></summary>
> 
> <table border="1" id="table"><caption>Rainfall in millimetres by Country
> and Season.</caption><tr> <td></td><th scope="col">UK</th><th
> scope="col">Japan</th><th scope="col">Australia</th></tr><tr> <th
> scope="row">Spring</th><td>5.5</td><td>2.4</td><td>2</td></tr><tr> <th
> scope="row">Summer</th><td>4.5</td><td>3.4</td><td>2</td></tr><tr> <th
> scope="row">Autumn</th><td>3.5</td><td>1.8</td><td>1.5</td></tr><tr> <th
> scope="row">Winter</th><td>1.5</td><td>1.2</td><td>1</td></tr></table>
> 
> </details>

Only thing I'm missing is <details role="img">. 
 
  [ snip ]
> resolves issues of:
> 
>    - providing *standardized* method for a programnmatically associated
>    long description
>    - provides it inline next to the image
>    - only displayed on user request
>    - does not clutter design (note example does not a disclosure triangle
>    as is suggested for details/summary in spec, but this would not clutter
>    desigh , i don't think)
>    - deprecates current longdesc use, but provides for backwards compat
>    and continued use of longdesc attribute

+1 for deprecation if an equivalent or better way can be specced - and 
this method at least have potential.

>    - details could conatin a.n <iframe> to display long descriptions
>    external to the page.
>    - long desc available to anybody who wants it.

Let us focus on the simplest replication of the @longdesc feature ... 
Then this should be both back- and forward compatible:

<details role="img">
 <summary><img longdesc="link" alt="Short desc"></summary>
 <a href="link">long desc link</a>
</details>

(The only problem we have, is that <details/> is a block element. This 
could be solved by wrapping it inside <object/>, though, provided that 
HTML5 would allow what HTML4 allows.)

Regarding what you say about iframe: One of the @longdesc use cases in 
HTML4, is providing information about an iframe element. However, what 
you describe above, is how one could use an iframe as a long 
description container.

While that is an interesting idea, how could the HTML4 use case be 
solved via <details/>? (HTML4 assumes that it is a burden for users of 
AT software want to know whether it is worth reading the iframe.)  

Suggestion: the ARIA equivalent of role="iframe". I'm in particular 
thinking about the situation when non-AT users do not need the 
<summary/>. How about the following: 

<details role="iframe">
 <summary class="hidden-from-non-AT-GUI-users"
          style="position:absolute;left:-100000cm;">
          iframe description
 </summary>
 <iframe src="iframesrc">
    <a href="iframesr">source doc</a>
 </iframe>
</details>
-- 
leif halvard silli

Received on Tuesday, 24 August 2010 14:24:54 UTC