tabindex-001.tentative.html (2343B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"/> 5 <title>MathML tabIndex attribute</title> 6 <link rel="help" href="https://w3c.github.io/mathml-core/#css-styling"> 7 <link rel="help" href="https://w3c.github.io/mathml-core/#the-top-level-math-element"> 8 <meta name="assert" content="Verify default values for the tabIndex attribute"> 9 10 <script src="/mathml/support/mathml-fragments.js"></script> 11 <script src="/resources/testharness.js"></script> 12 <script src="/resources/testharnessreport.js"></script> 13 </head> 14 <body> 15 <div id="log"></div> 16 <math> 17 </math> 18 <script> 19 const htmlLinkableElements = 20 new Set([ 21 'mi', 'mo', 'mn', 'ms', 'mtext', 'mrow' 22 ]); 23 24 Object.keys(MathMLFragments).forEach(elName => { 25 const mathEl = document.querySelector('math'); 26 27 mathEl.innerHTML = ` 28 <${elName} id="el" onfocus="alert('fail')"></${elName}> 29 <${elName} id="el-link" href="javascript:alert('fail')" onfocus="alert('fail')"></${elName}> 30 `; 31 32 const el = mathEl.querySelector('#el'); 33 const elLink = mathEl.querySelector('#el-link'); 34 35 const expectedDefault = (htmlLinkableElements.has(elName)) ? 0 : -1; 36 37 test(() => { 38 assert_equals(el.tabIndex, expectedDefault, "no attribute"); 39 el.setAttribute("tabindex", "invalid"); 40 assert_equals(el.getAttribute("tabindex"), "invalid"); 41 assert_equals(el.tabIndex, expectedDefault, "invalid"); 42 el.setAttribute("tabindex", "9999999999"); 43 assert_equals(el.getAttribute("tabindex"), "9999999999"); 44 assert_equals(el.tabIndex, expectedDefault, "too large integer"); 45 }, `default and invalid values for ${elName} without href`); 46 test(() => { 47 assert_equals(elLink.tabIndex, expectedDefault, "no attribute"); 48 elLink.setAttribute("tabindex", "invalid"); 49 assert_equals(elLink.getAttribute("tabindex"), "invalid"); 50 assert_equals(elLink.tabIndex, expectedDefault, "invalid"); 51 elLink.setAttribute("tabindex", "9999999999"); 52 assert_equals(elLink.getAttribute("tabindex"), "9999999999"); 53 assert_equals(elLink.tabIndex, expectedDefault, "too large integer"); 54 }, `default and invalid values for ${elName} with href`); 55 }); 56 </script> 57 </body> 58 </html>