extra-text-nodes.html (1297B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>Editor should not create unnecessary text nodes</title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <div contenteditable></div> 7 <script> 8 var div = document.querySelector("div"); 9 var walker = document.createTreeWalker(div, NodeFilter.SHOW_TEXT); 10 function testInput(html, callback, desc) { 11 test(() => { 12 div.innerHTML = html; 13 div.focus(); 14 callback(); 15 16 walker.currentNode = walker.root; 17 var node; 18 while (node = walker.nextNode()) { 19 if (node.nextSibling) { 20 assert_not_equals(node.nextSibling.nodeType, Node.TEXT_NODE, 21 'text node "' + node.nodeValue + '" is next to "' + 22 node.nextSibling.nodeValue + '"'); 23 } 24 } 25 }, desc); 26 } 27 28 [ 29 ['<img src="#">foo<img src="#">', 30 () => { 31 getSelection().collapse(div, 1); 32 document.execCommand("inserttext", false, "x"); 33 }, 34 "Simple insertText"], 35 ['<p>editor</p>', 36 () => { 37 getSelection().collapse(div.firstChild.firstChild, 3); 38 document.execCommand("insertlinebreak", false, ""); 39 document.execCommand("inserttext", false, "x"); 40 }, 41 "insertText after insertLineBreak"], 42 ].forEach(([a, b, c]) => testInput(a, b, c)); 43 </script>