| <!DOCTYPE html> |
| <link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#specially-focusable"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <div id="default-samples"> |
| <a></a> |
| <a href=""></a> |
| <button></button> |
| <input type="hidden"> |
| <input type="button"> |
| <select><option>abc</option></select> |
| <textarea></textarea> |
| <summary id="summary-out"></summary> |
| <details open><summary id="summary-first"></summary><summary id="summary-second"></summary></details> |
| <div contenteditable="true"></div> |
| <iframe></iframe> |
| </div> |
| <script> |
| const defaultList = [ |
| ['a', false], |
| ['a[href]', true], |
| ['button', true], |
| ['input[type="hidden"]', false], |
| ['input[type="button"]', true], |
| ['select', true], |
| ['textarea', true], |
| ['#summary-out', false], |
| ['#summary-first', true], |
| ['#summary-second', false], |
| ['[contenteditable]', true], |
| ['iframe', true], |
| ]; |
| for (entry of defaultList) { |
| test(() => { |
| var element = document.querySelector('#default-samples ' + entry[0]); |
| element.focus(); |
| if (entry[1]) |
| assert_equals(document.activeElement, element); |
| else |
| assert_not_equals(document.activeElement, element); |
| }, entry[0] + ' should ' + (entry[1] ? '' : 'not ') + 'be focusable by default.'); |
| } |
| </script> |
| |
| <div id="tabindex-0"> |
| <a tabindex="0"></a> |
| <summary tabindex="0" id="summary-out-tabindex0"></summary> |
| <details open><summary id="summary-first"></summary><summary tabindex="0" id="summary-second-tabindex0"></summary></details> |
| </div> |
| <script> |
| for (element of document.querySelectorAll('#tabindex-0 [tabindex]')) { |
| var elementDesc = element.tagName; |
| if (element.id) |
| elementDesc += '#' + element.id; |
| test(() => { |
| element.focus(); |
| assert_equals(document.activeElement, element); |
| }, elementDesc + ' with tabindex=0 should be focusable.'); |
| } |
| </script> |
| </body> |