| <div id="container"> |
| <p id="description"></p> |
| <div id="sample">0123<b>45</b>6789</div> |
| </div> |
| <div id="console"></div> |
| <script src="../../../resources/js-test.js"></script> |
| <script> |
| description('Range on detached node should not throw exception.'); |
| function $(id) { return document.getElementById(id); } |
| |
| function invalidNodeMessage(methodName) |
| { |
| return '"InvalidNodeTypeError: Failed to execute \'' + methodName + '\' on \'Range\': the given Node has no parent."' |
| } |
| |
| var sample = $('sample').cloneNode(true); |
| var range = document.createRange(); |
| |
| shouldBe('range.selectNode(sample.firstChild); range.startContainer', 'sample'); |
| shouldBe('range.setEndBefore(sample.firstChild); range.startContainer', 'sample'); |
| shouldBe('range.setEndAfter(sample.firstChild); range.startContainer', 'sample'); |
| shouldBe('range.setStartAfter(sample.firstChild); range.startContainer', 'sample'); |
| shouldBe('range.setStartBefore(sample.firstChild); range.startContainer', 'sample'); |
| |
| shouldThrow('range.selectNode(sample); range.startContainer', invalidNodeMessage('selectNode')); |
| shouldThrow('range.setEndAfter(sample); range.startContainer', invalidNodeMessage('setEndAfter')); |
| shouldThrow('range.setEndBefore(sample); range.startContainer', invalidNodeMessage('setEndBefore')); |
| shouldThrow('range.setStartAfter(sample); range.startContainer', invalidNodeMessage('setStartAfter')); |
| shouldThrow('range.setStartBefore(sample); range.startContainer', invalidNodeMessage('setStartBefore')); |
| |
| if (window.testRunner) |
| $('container').outerHTML = ''; |
| </script> |