test_element_closest.html (3241B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1055533 5 --> 6 <head> 7 <title>Test for Bug 1055533</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <script src="/tests/SimpleTest/EventUtils.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 11 </head> 12 <body id="body"> 13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055533">Mozilla Bug 1055533</a> 14 <div id="test8" class="div3"> 15 <div id="test7" class="div2"> 16 <div id="test6" class="div1"> 17 <form id="test10" class="form2"></form> 18 <form id="test5" class="form1" name="form-a"> 19 <input id="test1" class="input1" required> 20 <fieldset class="fieldset2" id="test2"> 21 <select id="test3" class="select1" required> 22 <option default id="test4" value="">Test4</option> 23 <option selected id="test11">Test11</option> 24 <option id="test12">Test12</option> 25 <option id="test13">Test13</option> 26 </select> 27 <input id="test9" type="text" required> 28 </fieldset> 29 </form> 30 </div> 31 </div> 32 </div> 33 <script class="testbody" type="text/javascript"> 34 test("select" , "test12", "test3"); 35 test("fieldset" , "test13", "test2"); 36 test("div" , "test13", "test6"); 37 test("body" , "test3" , "body"); 38 39 test("[default]" , "test4" , "test4"); 40 test("[selected]" , "test4" , ""); 41 test("[selected]" , "test11", "test11"); 42 test('[name="form-a"]' , "test12", "test5"); 43 test('form[name="form-a"]' , "test13", "test5"); 44 test("input[required]" , "test9" , "test9"); 45 test("select[required]" , "test9" , ""); 46 47 test("div:not(.div1)" , "test13", "test7"); 48 test("div.div3" , "test6" , "test8"); 49 test("div#test7" , "test1" , "test7"); 50 51 test(".div3 > .div2" , "test12", "test7"); 52 test(".div3 > .div1" , "test12", ""); 53 test("form > input[required]" , "test9" , ""); 54 test("fieldset > select[required]", "test12", "test3"); 55 56 test("input + fieldset" , "test6" , ""); 57 test("form + form" , "test3" , "test5"); 58 test("form + form" , "test5" , "test5"); 59 60 test(":empty" , "test10", "test10"); 61 test(":last-child" , "test11", "test2"); 62 test(":first-child" , "test12", "test3"); 63 test(":invalid" , "test11", "test2"); 64 65 test(":scope" , "test4", "test4"); 66 test("select > :scope" , "test4", "test4"); 67 test("div > :scope" , "test4", ""); 68 try { 69 test(":has(> :scope)" , "test4", "test3"); 70 } catch(e) { 71 todo(false, ":has(> :scope) [:has is not implemented yet]"); 72 } 73 function test(aSelector, aElementId, aTargetId) { 74 var el = document.getElementById(aElementId).closest(aSelector); 75 if (el === null) { 76 is("", aTargetId, aSelector); 77 } else { 78 is(el.id, aTargetId, aSelector); 79 } 80 } 81 </script> 82 </body> 83 </html>