<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - AX: link to container with fragment identifier that has tabindex results in container not being read and ignored by VoiceOver"
   href="https://bugs.webkit.org/show_bug.cgi?id=163658">163658</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>AX: link to container with fragment identifier that has tabindex results in container not being read and ignored by VoiceOver
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>Safari 10
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>iPhone / iPad
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>iOS 10
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Accessibility
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>redux&#64;splintered.co.uk
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>webkit-bug-importer&#64;group.apple.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=292058" name="attach_292058" title="Test case">attachment 292058</a> <a href="attachment.cgi?id=292058&amp;action=edit" title="Test case">[details]</a></span>
Test case

Due to focus management issues in some browsers, one common approach for skip links is to link to a container with an id that also has an explicit tabindex attribute, making it focusable.

&lt;a href=&quot;#content&quot;&gt;Skip to main content&lt;/a&gt;
...
&lt;div id=&quot;content&quot; tabindex=&quot;-1&quot;&gt;...&lt;/div&gt;

However, it seems that this sort of (fairly common) skip link pattern breaks in iOS10/VoiceOver/Safari. Specifically, it seems that if the target container has a tabindex attribute, VoiceOver does move the accessibility focus to the container, but announces nothing. But more worryingly, it then seems to ignore that entire target container - swiping left/right simply jumps over that container as if it wasn't in the document at all (though if you swipe long enough to get into the Safari UI and back, it seems to usually sort itself out again).

This is making fairly common skip links (for instance, those used in Bootstrap-based sites, if they follow the advice given in the BS documentation) completely unusable.

See attached test case and the video at <a href="https://www.youtube.com/watch?v=JUlSav9Nm_4">https://www.youtube.com/watch?v=JUlSav9Nm_4</a> (the first skip link works, but the other two skip links - to a &lt;div id=&quot;...&quot; tabindex=&quot;0&quot;&gt; and &lt;div id=&quot;...&quot; tabindex=&quot;-1&quot;&gt; - exhibit this broken behavior)</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>