The Bug
Found using Opera/9.01 (Windows NT 5.1; U; en) when testing a design with a layout similar to this one.
If you try to cycle through links using the A key (which cycles forwards through the links on a page), you'll probably find yourself part way down the page with the first link below the fold line receiving the current focus. Hit A again a few times and you'll jump to the top of the page, then back to below the fold line… ad finitum. You may not to be able to access the links in the upper part of the page or in the navigation menu!
Conversely, the Q key (which cycles back through the links on a page) will only cycle through links above the fold line - until you use the A key after which it will traverse all of the links until it reaches the top of the viewport. Then it will stay above the fold line again.
Switch back to between the two keys and you can access all links within the page but only until the top or bottom of the page is reached - after which point movement is again constrained inside, or outside, the viewport.
Why?
It isn't that Opera can't "see" these links. A quick check using Tools/Links shows that all of the links are available.
Something is interfering with the focus for the A and Q keys. Instead of cycling from the top of the viewport, the A key starts at the bottom of the viewport and then cycles down. Once the end of the page is reached, the focus shifts back to the faulty startpoint (bottom of the viewport), so anything above the fold line is missed completely. When I was googling for any reference to this kind of problem in Opera, I did come across a single reference to a similar problem in Opera 9 Beta.
The Q key focus seems to suffer from reverse behaviour.
What Is The Trigger?
It seems to be a combination of three conditions:
- A page that includes links below the foldline
- An offscreen positioned skip link
- Any styling on an enclosing container div or any block inside it.
Reducing the page content so all links lie above the fold line removes the problem. The Short Page page demonstrates this - even though the same CSS is used.