MutationObserver-characterData.html (9013B)
1 <!DOCTYPE HTML> 2 <meta charset=utf-8> 3 <title>MutationObservers: characterData mutations</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="mutationobservers.js"></script> 7 <h1>MutationObservers: characterData mutations</h1> 8 <div id="log"></div> 9 10 <section style="display: none"> 11 12 <p id='n'>text content</p> 13 14 <p id='n00'>text content</p> 15 16 <p id='n10'>CHAN</p> 17 <p id='n11'>CHANGED</p> 18 <p id='n12'>CHANGED</p> 19 20 <p id='n20'>CHGED</p> 21 <p id='n21'>CHANGED</p> 22 <p id='n22'>CHANGED</p> 23 24 <p id='n30'>CCCHANGED</p> 25 <p id='n31'>CHANGED</p> 26 27 <p id='n40'>CCCHANGED</p> 28 <p id='n41'>CHANGED</p> 29 30 <p id="n50"><?processing data?></p> 31 32 <p id="n60"><!-- data --></p> 33 34 <p id='n70'>CHANN</p> 35 <p id='n71'>CHANN</p> 36 37 <p id='n80'>CHANN</p> 38 <p id='n81'>CHANN</p> 39 40 <p id='n90'>CHANN</p> 41 42 </section> 43 44 <script> 45 var n = document.getElementById('n').firstChild; 46 runMutationTest(n, 47 {"characterData":true}, 48 [{type: "characterData"}], 49 function() { n.data = "NEW VALUE"; }, 50 "characterData Text.data: simple mutation without oldValue"); 51 52 var n00 = document.getElementById('n00').firstChild; 53 runMutationTest(n00, 54 {"characterData":true,"characterDataOldValue":true}, 55 [{type: "characterData", oldValue: "text content" }], 56 function() { n00.data = "CHANGED"; }, 57 "characterData Text.data: simple mutation"); 58 59 var n10 = document.getElementById('n10').firstChild; 60 runMutationTest(n10, 61 {"characterData":true,"characterDataOldValue":true}, 62 [{type: "characterData", oldValue: "CHAN" }], 63 function() { n10.appendData("GED"); }, 64 "characterData Text.appendData: simple mutation"); 65 66 var n11 = document.getElementById('n11').firstChild; 67 runMutationTest(n11, 68 {"characterData":true,"characterDataOldValue":true}, 69 [{type: "characterData", oldValue: "CHANGED" }], 70 function() { n11.appendData(""); }, 71 "characterData Text.appendData: empty string mutation"); 72 73 var n12 = document.getElementById('n12').firstChild; 74 runMutationTest(n12, 75 {"characterData":true,"characterDataOldValue":true}, 76 [{type: "characterData", oldValue: "CHANGED" }], 77 function() { n12.appendData(null); }, 78 "characterData Text.appendData: null string mutation"); 79 80 var n20 = document.getElementById('n20').firstChild; 81 runMutationTest(n20, 82 {"characterData":true,"characterDataOldValue":true}, 83 [{type: "characterData", oldValue: "CHGED" }], 84 function() { n20.insertData(2, "AN"); }, 85 "characterData Text.insertData: simple mutation"); 86 87 var n21 = document.getElementById('n21').firstChild; 88 runMutationTest(n21, 89 {"characterData":true,"characterDataOldValue":true}, 90 [{type: "characterData", oldValue: "CHANGED" }], 91 function() { n21.insertData(2, ""); }, 92 "characterData Text.insertData: empty string mutation"); 93 94 var n22 = document.getElementById('n22').firstChild; 95 runMutationTest(n22, 96 {"characterData":true,"characterDataOldValue":true}, 97 [{type: "characterData", oldValue: "CHANGED" }], 98 function() { n22.insertData(2, null); }, 99 "characterData Text.insertData: null string mutation"); 100 101 var n30 = document.getElementById('n30').firstChild; 102 runMutationTest(n30, 103 {"characterData":true,"characterDataOldValue":true}, 104 [{type: "characterData", oldValue: "CCCHANGED" }], 105 function() { n30.deleteData(0, 2); }, 106 "characterData Text.deleteData: simple mutation"); 107 108 var n31 = document.getElementById('n31').firstChild; 109 runMutationTest(n31, 110 {"characterData":true,"characterDataOldValue":true}, 111 [{type: "characterData", oldValue: "CHANGED" }, {type: "characterData", oldValue: "CHANGED" }], 112 function() { n31.deleteData(0, 0); n31.data = "n31"; }, 113 "characterData Text.deleteData: empty mutation"); 114 115 var n40 = document.getElementById('n40').firstChild; 116 runMutationTest(n40, 117 {"characterData":true,"characterDataOldValue":true}, 118 [{type: "characterData", oldValue: "CCCHANGED" }], 119 function() { n40.replaceData(0, 2, "CH"); }, 120 "characterData Text.replaceData: simple mutation"); 121 122 var n41 = document.getElementById('n41').firstChild; 123 runMutationTest(n41, 124 {"characterData":true,"characterDataOldValue":true}, 125 [{type: "characterData", oldValue: "CHANGED" }], 126 function() { n41.replaceData(0, 0, "CH"); }, 127 "characterData Text.replaceData: empty mutation"); 128 129 var n50 = document.getElementById('n50').firstChild; 130 runMutationTest(n50, 131 {"characterData":true,"characterDataOldValue":true}, 132 [{type: "characterData", oldValue: "?processing data?" },{type: "characterData", oldValue: "CHANGED" },{type: "characterData", oldValue: "CHANGED" }], 133 function() { 134 n50.data = "CHANGED"; 135 n50.deleteData(0, 0); 136 n50.replaceData(0, 2, "CH"); }, 137 "characterData ProcessingInstruction: data mutations"); 138 139 var n60 = document.getElementById('n60').firstChild; 140 runMutationTest(n60, 141 {"characterData":true,"characterDataOldValue":true}, 142 [{type: "characterData", oldValue: " data " },{type: "characterData", oldValue: "CHANGED" },{type: "characterData", oldValue: "CHANGED" }], 143 function() { 144 n60.data = "CHANGED"; 145 n60.deleteData(0, 0); 146 n60.replaceData(0, 2, "CH"); }, 147 "characterData Comment: data mutations"); 148 149 var n70 = document.getElementById('n70'); 150 var r70 = null; 151 test(function () { 152 n70.appendChild(document.createTextNode("NNN")); 153 n70.appendChild(document.createTextNode("NGED")); 154 r70 = document.createRange(); 155 r70.setStart(n70.firstChild, 4); 156 r70.setEnd(n70.lastChild, 1); 157 }, "Range (r70) is created"); 158 runMutationTest(n70.firstChild, 159 {"characterData":true,"characterDataOldValue":true}, 160 [{type: "characterData", oldValue: "CHANN" }], 161 function() { r70.deleteContents(); }, 162 "characterData Range.deleteContents: child and data removal mutation"); 163 164 var n71 = document.getElementById('n71'); 165 var r71 = null; 166 test(function () { 167 n71.appendChild(document.createTextNode("NNN")); 168 n71.appendChild(document.createTextNode("NGED")); 169 r71 = document.createRange(); 170 r71.setStart(n71.firstChild, 4); 171 r71.setEnd(n71.lastChild, 1); 172 }, "Range (r71) is created"); 173 runMutationTest(n71.lastChild, 174 {"characterData":true,"characterDataOldValue":true}, 175 [{type: "characterData", oldValue: "NGED"}], 176 function() { r71.deleteContents(); }, 177 "characterData Range.deleteContents: child and data removal mutation (2)"); 178 179 var n80 = document.getElementById('n80'); 180 var r80 = null; 181 test(function () { 182 n80.appendChild(document.createTextNode("NNN")); 183 n80.appendChild(document.createTextNode("NGED")); 184 r80 = document.createRange(); 185 r80.setStart(n80.firstChild, 4); 186 r80.setEnd(n80.lastChild, 1); 187 }, "Range (r80) is created"); 188 runMutationTest(n80.firstChild, 189 {"characterData":true,"characterDataOldValue":true}, 190 [{type: "characterData", oldValue: "CHANN" }], 191 function() { r80.extractContents(); }, 192 "characterData Range.extractContents: child and data removal mutation"); 193 194 var n81 = document.getElementById('n81'); 195 var r81 = null; 196 test(function () { 197 n81.appendChild(document.createTextNode("NNN")); 198 n81.appendChild(document.createTextNode("NGED")); 199 r81 = document.createRange(); 200 r81.setStart(n81.firstChild, 4); 201 r81.setEnd(n81.lastChild, 1); 202 }, "Range (r81) is created"); 203 runMutationTest(n81.lastChild, 204 {"characterData":true,"characterDataOldValue":true}, 205 [{type: "characterData", oldValue: "NGED" }], 206 function() { r81.extractContents(); }, 207 "characterData Range.extractContents: child and data removal mutation (2)"); 208 209 var n90 = document.getElementById('n90').firstChild; 210 runMutationTest(n90, 211 {"characterDataOldValue":true}, 212 [{type: "characterData", oldValue: "CHANN" }], 213 function() { n90.data = "CHANGED"; }, 214 "characterData/characterDataOldValue alone Text.data: simple mutation"); 215 </script>