Bug 175737 - AX: Scroll position jumps when reading non-interactive content with VoiceOver
Summary: AX: Scroll position jumps when reading non-interactive content with VoiceOver
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Accessibility (show other bugs)
Version: Safari 10
Hardware: iPhone / iPad iOS 10.3
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2017-08-18 15:23 PDT by Alex Lande
Modified: 2017-08-18 15:23 PDT (History)
1 user (show)

See Also:


Attachments
HTML file to demonstrate issue (1.71 KB, text/html)
2017-08-18 15:23 PDT, Alex Lande
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alex Lande 2017-08-18 15:23:09 PDT
Created attachment 318550 [details]
HTML file to demonstrate issue

On iOS, VoiceOver causes the screen to jump to the top of the page when reading certain page content. This happens most often when reading non-interactive and non-heading elements like `<p>` tags. This occurs when
the content is inside of a container with `tabindex='-1'` and the page is
taller than the screen height of the device.

The bug occurs to a limited extent whenever the tabindex is present, but only
happens with certain elements near the bottom of the page. If the page includes a `height: 100%` style declaration on `html`, `body`, and the containing element, the bug occurs for all `<p>` tags that don't fit on the screen initially.

I've attached an HTML file to reproduce the bug, it's also available on JSBin: http://output.jsbin.com/viyibe


Steps to Reproduce:

1. Open the attached page on an iOS device and open VoiceOver.
2. Swipe right repeatedly to read through page content until you get past the content that fits on the screen initially.


Actual Results:

When VoiceOver reads `<p>` elements after the first few, the browser will visually jump to the top of the page.


Expected Results:

Each `<p>` element read by VoiceOver should be on screen when it is read, and the browser should not jump to the top of the page.


Additional Information:

To see the expected behavior, you can remove the `tabindex='-1'` from the containing `<div>`. To see a limited form of the bug which only applies on the last 1-2 `<p>` elements on the page, you can remove the line of CSS setting `height: 100%` on the containing elements (while leaving the `tabindex` in place).
Comment 1 Radar WebKit Bug Importer 2017-08-18 15:23:38 PDT
<rdar://problem/33971415>