| <html> |
| <head> |
| <script> |
| function log(msg) |
| { |
| document.getElementById('log').appendChild(document.createTextNode(msg + '\n')); |
| } |
| |
| function description(element) |
| { |
| if (element.tagName && element.tagName.match(/input/i)) { |
| return '<input value="' + element.value + '" tabindex="' + element.tabIndex + '">'; |
| } else { |
| return element.toString(); |
| } |
| } |
| |
| function dispatchTabPress(element, shiftKey) |
| { |
| var event = document.createEvent('KeyboardEvents'); |
| var tabKeyIdentifier = 'U+0009'; |
| event.initKeyboardEvent('keydown', true, true, document.defaultView, tabKeyIdentifier, 0, false, false, shiftKey, false, false); |
| element.dispatchEvent(event); |
| } |
| |
| var lastFocusedElement = null; |
| function focusListener(event) |
| { |
| log('<input value="' + event.target.value + '" tabindex="' + event.target.tabIndex + '"> focused'); |
| lastFocusedElement = event.target; |
| } |
| |
| function addEventListenersToInputs(inputs) |
| { |
| for (var i = 0; i < inputs.length; ++i) { |
| inputs[i].addEventListener('focus', focusListener, false); |
| } |
| } |
| |
| function test() |
| { |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| } |
| |
| var inputs = document.getElementsByTagName('input'); |
| |
| // Put focus in the page |
| inputs[0].focus(); |
| inputs[0].blur(); |
| |
| addEventListenersToInputs(inputs); |
| |
| log('Tabbing forward....\n'); |
| for (var i = 0; i < inputs.length; ++i) { |
| if (inputs[i].tabIndex >= 0) |
| dispatchTabPress(document, false); |
| } |
| |
| lastFocusedElement.blur(); |
| |
| log('\nTabbing backward....\n'); |
| for (var i = 0; i < inputs.length; ++i) { |
| if (inputs[i].tabIndex >= 0) |
| dispatchTabPress(document, true); |
| } |
| |
| log('\nTest finished\n'); |
| } |
| </script> |
| </head> |
| <body onload="test()"> |
| <p>This page tests that the <a href="http://www.w3.org/TR/html4/interact/forms.html#h-17.11.1" title="HTML4 tabbing order spec">HTML4 tabbing order</a> is respected properly.</p> |
| <p>To test, put focus in "a". Pressing Tab should focus "a" through "k" in order, and pressing Shift-Tab should reverse the order.</p> |
| |
| <input tabindex="6" value="g"><br> |
| <input tabindex="1" value="a"><br> |
| <input tabindex="-5" value="not in tab order (negative tabindex)"><br> |
| <input tabindex="1" value="b"><br> |
| <input tabindex="0" value="i"><br> |
| <input tabindex="6" value="h"><br> |
| <input tabindex="1" value="c"><br> |
| <input tabindex="1" value="d"><br> |
| <input tabindex="0" value="j"><br> |
| <input tabindex="-1" value="not in tab order (negative tabindex)"><br> |
| <input tabindex="0" value="k"><br> |
| <input tabindex="4" value="f"><br> |
| <input tabindex="3" value="e"><br> |
| |
| <pre id="log"></pre> |
| </body> |
| </html> |
| |