Short answer: Use skip nav links in conjunction with coherent heading outline and ARIA Landmarks, and be aware of browser support.
It can be frustrating and fatiguing for folks with limited mobility to have to have to repeatedly tab through navigation links to get to the main content of a page. People who use screen readers face similar frustration with repetitive content on poorly structured pages. In order to address this issue, WCAG 2.0 has specified a guideline for bypassing blocks of content that are repeated across multiple pages.
A classic approach to fulfilling this requirement has been to include a [skip navigation link][1] at the beginning of the page, that changes focus to the first element after the repeated content.
<body>
<a href="#main">Skip to main content</a>
<nav role='navigation'>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/blog">Blog</a></li>
</ul>
</nav>
<div id="main" role="main">
<!-- page specific content -->
</div>
</body>
Skip navigation links are recommended by the W3C and many others as a sufficient technique, despite having long been [broken in Webkit][2] and only recently fixed. Be aware that until browsers that use Webkit release these fixes for skip navigation links, you will need to augment the technique for it to be useful. Nicholas C. Zakas has outlined a solution using Javascript.
Also keep in mind that you can address the same issues for screen reader users when you group content in a coherent outline using meaningful headings and use ARIA landmarks to define regions, as illustrated in Quick Tip: ARIA Landmark Roles.
[1]: Jim Thatcher pioneered and advocated skip navigation links as early as 1998 [2]: Skip navigation links had been broken in Webkit since at least March 8, 2010. The functionality is not broken in Blink.
Looks really good. With a critical eye, I think the 3rd paragraph kind a repeats a bit and maybe the Jim Thatcher stuff moves down to a footnote since the historical aspects aren't as necessary as fixing it.
Also, I think it might be more correct to say that its broken in Webkit, but works in Blink.