Re: Why Skip Navigation Links are a Hack

On Friday, June 13, 2003, at 05:49 PM, tina@greytower.net wrote:
> On 13 Jun, Kynn Bartlett wrote
>>>   is presentational markup ? Could you please refer to the relevant
>>>   sections of the HTML specification stating that internal links are
>>>   presentational and only applies for one specific media type ?
>>
>> It's not structural, and it introduces a link for no reason other
>> than providing functionality in or more presentations.
>    For some reason your logic escapes me. I am under the impression 
> that
>    a hyperlink is, indeed, structural. Would you agree with this ?

It depends on how it's used.

<blockquote>, for example, is structural.  But not all uses of 
<blockquote>
are structural.

For example, using <blockquote> to indent, because you want those nice
margins, doesn't make it structural unless you're using it with a quote.

>    Proceeding with that assumption, *any* hyperlink would be 
> structural.
>    Would you still agree ?

No, bad assumption.

>    And, if so, I wonder what precisely the difference is between a
>      <a href="#main">Main content</a>
>    and
>      <a href="#first">Chapter One</a>

The second is put in to allow navigation through the content.  The other
is put in to allow meta-navigation, to compensate for a deficiency in 
the
HTML standard.

>    Frankly, apart from the fact that as it IS in the currently standard
>    (ie. WCAG 1.0) that is, under some circumstances, to be followed and
>    hence should be in there, I cannot see that there is a fundamental
>    difference.

You're very literal minded.  I'm sorry if "thinking outside the box"
leads you to reject what you're being told.

Sometimes, you see, it's okay to break the rules, even if they're in
WCAG 1.0, as long as you know what you're doing and why you're doing it.

In this case, breaking the rules by using a better data structure
that explicitly allows for content structure to be expressed correctly
can substitute for a hack.

>    Either A is a structural element, and can be freely used to create
>    links, OR it isn't - and all of them should go.

Ha ha ha!  Good example of "all or nothing" thinking, but quite wrong.

>> In a "pure" form of content-driven structural HTML, rather than one
>> which makes special exceptions for specific modalities, there's no way
>> you'd be inserting such a link.
>   Would you, then, not use any form of internal link at all ?

Ideally, links to content structure shouldn't be necessary unless you're
linking to something that isn't a normal breakpoint.

Browsers should autogenerate links ahead and back based on the 
structure.
(They don't now, but they should.  The reason they don't is because HTML
doesn't have good support for such behavior.)

If you want to include other links, sure, there's no reason you can't.

But are you including a link to the main content because you think it's
useful, or are you including it because WCAG 1.0 tells you to, and you
blindly follow whatever WCAG 1.0 says?  (Perhaps this is unfair, but if
you are going to argue "WCAG 1.0 says it's the standard, so that's
settled!" then you have to be prepared for your adherence to this
pioneering but in-need-of-revision document to be challenged.)

Let's put it this way:  If there were no such thing as screenreaders,
would you include a Skip Navigation link?  Or, if all screenreaders 
would
automatically identify the start of the content and allow the user to
jump directly there, would you still put a Skip Navigation link?
On most pages the answer is quite definitely "no".  On the other hand,
there are many pages where you can and will use in-page anchors to
move around within the content.

>> But the insertion of that _link_ at a particular place is only meant
>> to force the insertion of an arbitrary link at an arbitrary place.
>   No. The reason for inserting that link at a particular place is to
>   give the user a link to a specific part/section of a document.
>   Sometimes a cigar is, simply, a cigar.

And sometimes it's not.

>   Yes, LINK would be better for this purpose. Sadly the idea that was
>   introduced in 1995 has yet to be adopted by so-called "mainstream"
>   browsers, even if Lynx has had it for ages.

Saying it was introduced in 1995 is not entirely accurate.  There's no
indication in the HTML 2.0 or HTML 3.2 specifications for <link> that
say how to use <link> for this skip-link functionality that you specify.
That was only introduced in HTML 4.0, which is the first (and only,
counting HTML 4.01 as just an update) appearance of <link 
rel="bookmark">,
which is defined thusly:

   Bookmark

   Refers to a bookmark. A bookmark is a link to a key entry point
   within an extended document. The title attribute may be used, for
   example, to label the bookmark. Note that several bookmarks may be
   defined in each document.

HTML 4.0 was released in 1998, by the way -- and there's no directions 
on
how it should be implemented in practice in the browser.

>   'Skip navigation' is not a 'hack'. It is, quite simply, using a 
> normal
>   internal hyperlink to solve a very practical problem of 
> accessibility.

Yes, that's what we call a hack.

>    Applying a less-than-perfect tool for a particular job is not 
> exactly
>    the same as applying the *wrong* tool.

HTML is the wrong tool.  XHTML 2.0 strives to correct part of this 
wrongness.
Using a less-than-perfect tool is the very definition of the word 
'hack'.

Are you simply afraid of that word itself?  Are mere semantics driving 
you
to argue this point?

What if I said 'a clever solution which ultimately shouldn't be 
necessary
when we get better markup languages and better tools, and which is 
sometimes
problematic in practice but mostly works'?

Is it just offense that something you've been using might be labeled by 
a
term with negative connotations?

>> But Skip Navigation is still a hack -- because it's pseudo-structural
>> markup, that functions as presentational markup.
>
>   You stand by your claim that A, then, is pseudo-structural at best ?

Hahahahaha.  Nice straw man.

Yes, you can misuse <a> in ways that have nothing to do with the
structure of the document and everything to do with designing for
one presentation.

Warping your content to design for the visual presentation is a bad
thing.  Warping your content to design for the non-visual presentation
is also a bad thing.  In the big scale of bad things, it's surely not
awful -- but the reason we have to use a hack (sorry, said that word
again) is because HTML, to date, has not been sufficient to capture
the structure of a Web document.

--Kynn

--
Kynn Bartlett <kynn@idyllmtn.com>                     http://kynn.com
Chief Technologist, Idyll Mountain                http://idyllmtn.com
Author, CSS in 24 Hours                       http://cssin24hours.com
Inland Anti-Empire Blog                      http://blog.kynn.com/iae
Shock & Awe Blog                           http://blog.kynn.com/shock

Received on Friday, 13 June 2003 21:30:30 UTC