| <html> |
| <body> |
| <div class="one"> |
| Line 1 |
| <div class="two">Line 2</div> |
| <p>Line <i>3</i></p> |
| </div> |
| <div id="test" class="one two"> |
| <div id="me"></div> |
| <div id="dupe"></div> |
| <div id="dupe"></div> |
| <div id="test2" class="one two">line 4</div> |
| <p class="two">line 5</p> |
| </div> |
| |
| <pre id="console"></pre> |
| <script type="text/javascript"> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| function log(message) |
| { |
| document.getElementById('console').appendChild(document.createTextNode(message + "\n")); |
| } |
| |
| Element.prototype.dump = function() |
| { |
| return this; |
| } |
| |
| NodeList.prototype.dump = function() |
| { |
| var result = ""; |
| var length = this.length; |
| for (var i = 0; i < length; i++) |
| result += this[i] + ", "; |
| result += "length: " + length; |
| return result; |
| } |
| |
| testQuerySelectorAll = function(node, selectorString) |
| { |
| try { |
| log(node.querySelectorAll(selectorString).dump()); |
| } catch (e) { |
| log(e); |
| } |
| } |
| |
| testQuerySelector = function(node, selectorString) |
| { |
| try { |
| log(node.querySelector(selectorString).dump()); |
| } catch (e) { |
| log(e); |
| } |
| } |
| |
| var elm = document.getElementById("test"); |
| |
| var tagString = elm.outerHTML; |
| var range = document.createRange(); |
| range.selectNode(elm); |
| var frag = range.createContextualFragment(tagString); |
| |
| log("Document.querySelectorAll"); |
| log(""); |
| |
| testQuerySelectorAll(document, "#test"); |
| testQuerySelectorAll(document, "#notthere"); |
| testQuerySelectorAll(document, "#dupe"); |
| testQuerySelectorAll(document, ".two"); |
| testQuerySelectorAll(document, ".one, .two"); |
| testQuerySelectorAll(document, "@font-face"); |
| testQuerySelectorAll(document, ""); |
| testQuerySelectorAll(document, null); |
| testQuerySelectorAll(document, undefined); |
| testQuerySelectorAll(document, "#test>div"); |
| |
| log(""); |
| log("Element.querySelectorAll"); |
| log(""); |
| |
| testQuerySelectorAll(elm, "#test"); |
| testQuerySelectorAll(elm, "#test2"); |
| testQuerySelectorAll(elm, "#notthere"); |
| testQuerySelectorAll(elm, "#dupe"); |
| testQuerySelectorAll(elm, ".two"); |
| testQuerySelectorAll(elm, ".one, .two"); |
| testQuerySelectorAll(elm, "@font-face"); |
| testQuerySelectorAll(elm, ""); |
| testQuerySelectorAll(elm, null); |
| testQuerySelectorAll(elm, undefined); |
| |
| log(""); |
| log("DocumentFragment.querySelectorAll"); |
| log(""); |
| |
| testQuerySelectorAll(frag, "#test"); |
| testQuerySelectorAll(frag, "#test2"); |
| testQuerySelectorAll(frag, "#notthere"); |
| testQuerySelectorAll(frag, "#dupe"); |
| testQuerySelectorAll(frag, ".two"); |
| testQuerySelectorAll(frag, ".one, .two"); |
| testQuerySelectorAll(frag, "@font-face"); |
| testQuerySelectorAll(frag, ""); |
| testQuerySelectorAll(frag, null); |
| testQuerySelectorAll(frag, undefined); |
| |
| log(""); |
| log("Document.querySelector"); |
| log(""); |
| |
| testQuerySelector(document, "#test"); |
| testQuerySelector(document, "#notthere"); |
| testQuerySelector(document, "#dupe"); |
| testQuerySelector(document, ".two"); |
| testQuerySelector(document, ".one, .two"); |
| testQuerySelector(document, "@font-face"); |
| testQuerySelector(document, ""); |
| testQuerySelector(document, null); |
| testQuerySelector(document, undefined); |
| |
| log(""); |
| log("Element.querySelector"); |
| log(""); |
| |
| testQuerySelector(elm, "#test"); |
| testQuerySelector(elm, "#test2"); |
| testQuerySelector(elm, "#notthere"); |
| testQuerySelector(elm, "#dupe"); |
| testQuerySelector(elm, ".two"); |
| testQuerySelector(elm, ".one, .two"); |
| testQuerySelector(elm, "@font-face"); |
| testQuerySelector(elm, ""); |
| testQuerySelector(elm, null); |
| testQuerySelector(elm, undefined); |
| |
| log(""); |
| log("DocumentFragment.querySelector"); |
| log(""); |
| |
| testQuerySelector(frag, "#test"); |
| testQuerySelector(frag, "#test2"); |
| testQuerySelector(frag, "#notthere"); |
| testQuerySelector(frag, "#dupe"); |
| testQuerySelector(frag, ".two"); |
| testQuerySelector(frag, ".one, .two"); |
| testQuerySelector(frag, "@font-face"); |
| testQuerySelector(frag, ""); |
| testQuerySelector(frag, null); |
| testQuerySelector(frag, undefined); |
| </script> |
| </body> |
| </html> |