[whatwg] web-apps - dfn jumps

Matthew Thomas mpt at myrealbox.com
Mon Nov 28 17:26:29 PST 2005

On 7 Nov, 2005, at 11:20 AM, Sander Tekelenburg wrote:
> <http://www.whatwg.org/specs/web-apps/current-work/#dfn0>
> ...
> The spec needs to indicate to UA developers that users should easily 
> be able to 'jump' back, instead of just getting lost. This would 
> require too many words. Thus, I propose to scrap the word "jump" 
> entirely. (After all, a possible implementation would be tooltips, in 
> which case there is no jumping at all.)

Tooltips probably wouldn't be a viable implementation, because of a 
long-standing and probably unsolvable problem with <dfn>: there is no 
programmatic way of telling where the definition begins and ends. Is it 
the current clause? The current sentence? (Dotted initialisms make even 
sentences impossible for a computer to demarcate reliably.) Two 
sentences? The whole paragraph? Two paragraphs? In many school 
textbooks you could probably find examples of all of these.

The reason I say the problem is probably unsolvable is that, while a 
<def> or similar ancestor element could be introduced to mark the full 
definition (for example, "<def>the American term for a crotchet is a 
<dfn>quarter note</dfn></def>"), authors wouldn't bother using it 
because they wouldn't get any presentational benefit from it. (The 
benefit of providing accurate tooltip boundaries probably wouldn't be 
obvious enough.)

So I'd expect <dfn> navigation, if it was implemented at all, to work 
just the same as navigation to internal anchors in the same document 
does currently: functioning as a jump, with the Back button returning 
to where you were.

> ...
> Already better would be:
> 	[...] should be presented in such a way that the user can easily
> 	access the first dfn element giving the defining instance of that
> 	term.
> I'd prefer something even more explicit, like
> 	[...] should be presented in such a way that the user can easily
> 	access the first dfn element giving the defining instance of that
> 	term, without risking the user can't find his way back.
> but I'm not entirely happy with this phrasing. I'm thinking of 
> something like "[...] easily access within the current view of the 
> document [...]" or "[...] easily access without losing the current 
> position in the document [...]", but given that the sentence already 
> is so long, I don't see how to cram this in :)
> ...

How about this:

     The _dfn_ element allows automatic cross-references. From any
     inline-level element that refers to a _dfn_ element, user agents
     should make it easy to access the definition provided by that
     _dfn_ element without losing one's previous place in the
     document. An inline-level element can be considered to refer to
     a _dfn_ element in the same document if (a) the inline-level
     element has no _dfn_ or interactive elements as ancestors or
     descendants, and (b) either its _title_ is equal to the _term_ of
     the dfn element or it has no _title_ but its _textContent_ is
     equal to the _term_ of the _dfn_ element, and (c) it does not have
     an ancestor element that is already referring to a _dfn_

This is also slightly shorter and easier to read than the current text, 
and avoids the confusing and unnecessary exclusion of elements like 
<em> (for example, "I said <em>font</em>, not <em>typeface</em> ... [a 
couple of paragraphs later] ... By <dfn>font</dfn> I mean a combination 
of typeface, size, weight, and variant").

One concern I have that is addressed by neither the current text, nor 
my suggested text above, is the "in the same document" bit; 
cross-references to definitions in different documents aren't just not 
automatic, they're not possible at all. It almost seems as if <a> is 
being reinvented badly.

Matthew Paul Thomas

More information about the whatwg mailing list