| <html> | |
| <head> | |
| <script type="text/javascript"> | |
| function print(message) | |
| { | |
| var paragraph = document.createElement("div"); | |
| if (message == "") { | |
| paragraph.appendChild(document.createElement("br")); | |
| } else { | |
| paragraph.appendChild(document.createTextNode(message)); | |
| } | |
| document.getElementById("console").appendChild(paragraph); | |
| } | |
| function test() | |
| { | |
| if (window.testRunner) { | |
| testRunner.dumpAsText(); | |
| } | |
| var elt = document.getElementById("text"); | |
| print("===textarea==="); | |
| testElt(elt); | |
| elt = document.getElementById("input"); | |
| print(""); | |
| print("===input==="); | |
| testElt(elt); | |
| print(""); | |
| print("===button==="); | |
| // Make sure that accessing selectionStart and selectionEnd on | |
| // the button throws exceptions. | |
| elt = document.getElementById("button"); | |
| testButtonSelectionAccess(elt, ".selectionStart"); | |
| testButtonSelectionAccess(elt, ".selectionStart = 0"); | |
| testButtonSelectionAccess(elt, ".selectionEnd"); | |
| testButtonSelectionAccess(elt, ".selectionEnd = 0"); | |
| // Make sure that setSelectionRange is defined on the button element, | |
| // but throws an exception if called. | |
| if (elt.setSelectionRange != undefined) { | |
| print("button.setSelectionRange defined"); | |
| testButtonSelectionAccess(elt, ".setSelectionRange(0,0)"); | |
| } | |
| } | |
| function testElt(elt) | |
| { | |
| // make sure that setSelectionRange is defined | |
| if (elt.setSelectionRange == undefined) { | |
| print("Failed: no setSelectionRange"); | |
| return; | |
| } | |
| elt.value = "This is a test value. Just filling in some text."; | |
| // the value is 48 characters long | |
| print("setSelectionRange():"); | |
| elt.setSelectionRange(3,7); | |
| display(elt); | |
| elt.setSelectionRange(-2,5); | |
| display(elt); | |
| elt.setSelectionRange(42,54); | |
| display(elt); | |
| elt.setSelectionRange(5,2); | |
| display(elt); | |
| print(""); | |
| print("selectionStart:"); | |
| elt.selectionStart = 3; | |
| display(elt); | |
| elt.selectionStart = 7; | |
| display(elt); | |
| elt.selectionStart = -1; | |
| display(elt); | |
| elt.selectionStart = 54; | |
| display(elt); | |
| elt.selectionStart = 3; | |
| display(elt); | |
| print(""); | |
| print("selectionEnd:"); | |
| elt.selectionEnd = 5; | |
| display(elt); | |
| elt.selectionEnd = 2; | |
| display(elt); | |
| elt.selectionEnd = -1; | |
| display(elt); | |
| elt.selectionEnd = 54; | |
| display(elt); | |
| elt.selectionStart = 7; | |
| elt.selectionEnd = 7; | |
| display(elt); | |
| elt.value = ""; | |
| } | |
| function testButtonSelectionAccess(button, access) | |
| { | |
| var source = "button" + access; | |
| try { | |
| eval(source); | |
| print(source + " did not throw exception"); | |
| } catch(e) { | |
| print(source + " threw exception"); | |
| } | |
| } | |
| function display(elt) | |
| { | |
| var actStart = elt.selectionStart; | |
| var actEnd = elt.selectionEnd; | |
| var txt = actStart.toString() + ", " + actEnd.toString(); | |
| print(txt); | |
| } | |
| </script> | |
| </head> | |
| <body onload="test();"> | |
| <p>This test checks if setSelectionRange(), selectionStart, and selectionEnd on a textarea and input work as expected. This includes checking edge cases such as out-of-bound values.</p> | |
| <p>If this test passed you'll see a bunch of correct selection ranges below. Check the expected file for the correct ranges.</p> | |
| <hr /> | |
| <form> | |
| <textarea id="text"></textarea> | |
| <input type="text" id="input" /> | |
| <input type="button" id="button" /> | |
| </form> | |
| <hr /> | |
| <p id="console"></p> | |
| </body> | |
| </html> |