function checkInnerTextboxTabindex(input, tabindex) {
let fields = SpecialPowers.wrap(input).openOrClosedShadowRoot.querySelectorAll(".datetime-edit-field");
for (let field of fields) {
is(field.tabIndex, tabindex, "tabIndex in the inner textbox should be correct");
}
}
function testTabindex(type) {
let input1 = document.getElementById(type + "1");
let input2 = document.getElementById(type + "2");
let input3 = document.getElementById(type + "3");
let input4 = document.getElementById(type + "4");
input1.focus();
is(document.activeElement, input1, "input element with tabindex=0 is focusable");
// Timeinput does not include a Calendar button
let fieldCount;
if (type == "datetime-local") {
fieldCount = 7;
} else if (type == "date") {
fieldCount = 4;
} else {
fieldCount = 3;
};
// Advance through inner fields.
for (let i = 0; i < fieldCount - 1; ++i) {
synthesizeKey("KEY_Tab");
is(document.activeElement, input1, "input element with tabindex=0 is tabbable");
}
// Advance to next element
synthesizeKey("KEY_Tab");
is(document.activeElement, input3, "input element with tabindex=-1 is not tabbable");
input2.focus();
is(document.activeElement, input2, "input element with tabindex=-1 is still focusable");
// Changing the tabindex attribute dynamically.
input3.setAttribute("tabindex", "-1");
synthesizeKey("KEY_Tab"); // need only one TAB since input2 is not tabbable
isnot(document.activeElement, input3, "element with tabindex changed to -1 should not be tabbable");
isnot(document.activeElement, input4, "disabled element should not be tabbable");
checkInnerTextboxTabindex(input3, -1);
}
function test() {
for (let inputType of ["time", "date", "datetime-local"]) {
testTabindex(inputType);
}
}
</script>
</pre>
</body>
</html>
Messung V0.5
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.