sethtml-tree-construction.sub.dat (9490B)
1 #data 2 test 3 #document 4 | "test" 5 6 #data 7 <b>bla</b> 8 #document 9 | <b> 10 | "bla" 11 12 #data 13 <a<embla 14 #errors 15 Parse error 16 #document 17 18 #data 19 <html><head></head><body>test</body></html> 20 #document 21 | "test" 22 23 #data 24 <div>test 25 #document 26 | <div> 27 | "test" 28 29 #data 30 <script>alert('i am a test')</script> 31 #document 32 33 #data 34 hello<script>alert('i am a test')</script> 35 #document 36 | "hello" 37 38 #data 39 <div><b>hello<script>alert('i am a test')</script> 40 #document 41 | <div> 42 | <b> 43 | "hello" 44 45 #data 46 <p onclick='a= 123'>Click.</p> 47 #document 48 | <p> 49 | "Click." 50 51 #data 52 <plaintext><p>text</p> 53 #config 54 {} 55 #document 56 | <plaintext> 57 | "<p>text</p>" 58 59 #data 60 <xmp>TEXT</xmp> 61 #config 62 {} 63 #document 64 | <xmp> 65 | "TEXT" 66 67 #data 68 test 69 #config 70 { "test": 123 } 71 #document 72 | "test" 73 74 #data 75 test 76 #config 77 { "removeElements": [] } 78 #document 79 | "test" 80 81 #data 82 <div>test</div><p>bla 83 #config 84 { "removeElements": ["div"] } 85 #document 86 | <p> 87 | "bla" 88 89 #data 90 <custom-element>test1</custom-element>bla 91 #document 92 | "bla" 93 94 #data 95 <custom-element>test3</custom-element>bla 96 #config 97 { "elements": ["custom-element"] } 98 #document 99 | <custom-element> 100 | "test3" 101 | "bla" 102 103 #data 104 <custom-element>test5</custom-element>bla 105 #config 106 { "removeElements": ["custom-element"] } 107 #document 108 | "bla" 109 110 #data 111 <script>alert('i am a test')</script> 112 #config 113 { "removeElements": ["script"] } 114 #document 115 116 #data 117 <div>balabala<i>test</i></div><test-element>t</test-element> 118 #config 119 { "removeElements": ["test-element", "i"] } 120 #document 121 | <div> 122 | "balabala" 123 124 #data 125 <div>balabala<i>i</i><p>t</p></div> 126 #config 127 { "removeElements": ["dl", "p"] } 128 #document 129 | <div> 130 | "balabala" 131 | <i> 132 | "i" 133 134 #data 135 <div>test<div>p</div>tt<p>div</p></div> 136 #config 137 { "elements": ["p"], "replaceWithChildrenElements": ["div"] } 138 #document 139 | "test" 140 | "p" 141 | "tt" 142 | <p> 143 | "div" 144 145 #data 146 <div>test</div><p>bla 147 #config 148 { "removeElements": ["div"], "elements": ["div"] } 149 #error 150 TypeError 151 152 #data 153 <p id='test'>Click.</p> 154 #config 155 { "removeAttributes": [] } 156 #document 157 | <p> 158 | id="test" 159 | "Click." 160 161 #data 162 <p id='test'>Click.</p> 163 #config 164 { "removeAttributes": ["id"] } 165 #document 166 | <p> 167 | "Click." 168 169 #data 170 <p id='test'>Click.</p> 171 #config 172 { "elements": ["p"], "removeAttributes": ["id"] } 173 #document 174 | <p> 175 | "Click." 176 177 #data 178 <p id='p' data-attribute-with-dashes='123'>Click.</p><script>document.getElementById('p').dataset.attributeWithDashes=123;</script> 179 #config 180 { "elements": ["p"], "removeAttributes": ["data-attribute-with-dashes"] } 181 #document 182 | <p> 183 | id="p" 184 | "Click." 185 186 #data 187 <p id='p' title='p'>P</p><div id='div' title='div'>DIV</div> 188 #config 189 { "elements": [ 190 { "name": "p", "attributes": ["title"] }, 191 { "name": "div", "attributes": ["id"] } 192 ]} 193 #document 194 | <p> 195 | title="p" 196 | "P" 197 | <div> 198 | id="div" 199 | "DIV" 200 201 #data 202 <p id='p' title='p'>P</p><div id='div' title='div'>DIV</div> 203 #config 204 { "elements": 205 [ 206 { "name": "p", "removeAttributes": ["title"] }, 207 { "name": "div", "removeAttributes": ["id"] } 208 ] 209 } 210 #document 211 | <p> 212 | id="p" 213 | "P" 214 | <div> 215 | title="div" 216 | "DIV" 217 218 #data 219 <div id='div' title='div'>DIV</div> 220 #config 221 { "elements": [{ "name": "div", "attributes": ["id"], "removeAttributes": ["id"] }]} 222 #error 223 TypeError 224 225 #data 226 <div id='div' title='div'>DIV</div> 227 #config 228 { "elements": [{ "name": "div", "attributes": ["id", "title"] }], 229 "attributes": []} 230 #document 231 | <div> 232 | id="div" 233 | title="div" 234 | "DIV" 235 236 #data 237 <div id='div' title='div'>DIV</div> 238 #config 239 { 240 "elements": [{ "name": "div", "attributes": [] }], 241 "removeAttributes": ["id", "title"] 242 } 243 #document 244 | <div> 245 | "DIV" 246 247 #data 248 <div id='div' title='div'>DIV</div> 249 #config 250 { 251 "elements": [{ "name": "div", "removeAttributes": ["id", "title"] }], 252 "attributes": ["id", "title"] 253 } 254 #document 255 | <div> 256 | "DIV" 257 258 #data 259 <p id='test' onclick='a= 123'>Click.</p> 260 #config 261 { "attributes": ["id"] } 262 #document 263 | <p> 264 | id="test" 265 | "Click." 266 267 #data 268 <p style='color: black'>Click.</p> 269 #config 270 { "removeAttributes": ["style"], "attributes": ["style"] } 271 #error 272 TypeError 273 274 #data 275 <template><script>test</script><div>hello</div></template> 276 #config 277 { "elements": ["template", "div"] } 278 #document 279 | <template> 280 | content 281 | <div> 282 | "hello" 283 284 #data 285 <a href='javascript:evil.com'>Click.</a> 286 #document 287 | <a> 288 | "Click." 289 290 #data 291 <a href=' javascript:evil.com'>Click.</a> 292 #document 293 | <a> 294 | "Click." 295 296 #data 297 <a href='http:evil.com'>Click.</a> 298 #document 299 | <a> 300 | href="http:evil.com" 301 | "Click." 302 303 #data 304 <area href='javascript:evil.com'> 305 #config 306 {} 307 #document 308 | <area> 309 310 #data 311 <area href=' javascript:evil.com'> 312 #config 313 {} 314 #document 315 | <area> 316 317 #data 318 <area href='http:evil.com'> 319 #config 320 {} 321 #document 322 | <area> 323 | href="http:evil.com" 324 325 #data 326 <form action='javascript:evil.com'>Click.</form> 327 #config 328 {} 329 #document 330 | <form> 331 | "Click." 332 333 #data 334 <form action=' javascript:evil.com'>Click.</form> 335 #config 336 {} 337 #document 338 | <form> 339 | "Click." 340 341 #data 342 <form action='http:evil.com'>Click.</form> 343 #config 344 {} 345 #document 346 | <form> 347 | action="http:evil.com" 348 | "Click." 349 350 #data 351 <input formaction='javascript:evil.com'> 352 #config 353 {} 354 #document 355 | <input> 356 357 #data 358 <input formaction=' javascript:evil.com'> 359 #config 360 {} 361 #document 362 | <input> 363 364 #data 365 <input formaction='http:evil.com'> 366 #config 367 {} 368 #document 369 | <input> 370 | formaction="http:evil.com" 371 372 #data 373 <button formaction='javascript:evil.com'>Click.</button> 374 #config 375 {} 376 #document 377 | <button> 378 | "Click." 379 380 #data 381 <button formaction=' javascript:evil.com'>Click.</button> 382 #config 383 {} 384 #document 385 | <button> 386 | "Click." 387 388 #data 389 <button formaction='http:evil.com'>Click.</button> 390 #config 391 {} 392 #document 393 | <button> 394 | formaction="http:evil.com" 395 | "Click." 396 397 #data 398 <p>Some text</p></body><!-- 1 --></html><!-- 2 --><p>Some more text</p> 399 #document 400 | <p> 401 | "Some text" 402 | <p> 403 | "Some more text" 404 405 #data 406 <p>Some text</p><!-- 1 --><!-- 2 --><p>Some more text</p> 407 #document 408 | <p> 409 | "Some text" 410 | <p> 411 | "Some more text" 412 413 #data 414 <p>Some text</p><!-- 1 --><!-- 2 --><p>Some more text</p> 415 #config 416 { "comments": true } 417 #document 418 | <p> 419 | "Some text" 420 | <!-- 1 --> 421 | <!-- 2 --> 422 | <p> 423 | "Some more text" 424 425 #data 426 <p>Some text</p><!-- 1 --><!-- 2 --><p>Some more text</p> 427 #config 428 { "comments": false } 429 #document 430 | <p> 431 | "Some text" 432 | <p> 433 | "Some more text" 434 435 #data 436 <p>comment<!-- hello -->in<!-- </p> -->text</p> 437 #document 438 | <p> 439 | "comment" 440 | "in" 441 | "text" 442 443 #data 444 <p>comment<!-- hello -->in<!-- </p> -->text</p> 445 #config 446 { "comments": true } 447 #document 448 | <p> 449 | "comment" 450 | <!-- hello --> 451 | "in" 452 | <!-- </p> --> 453 | "text" 454 455 #data 456 <p>comment<!-- hello -->in<!-- </p> -->text</p> 457 #config 458 { "comments": false } 459 #document 460 | <p> 461 | "comment" 462 | "in" 463 | "text" 464 465 #data 466 <svg></svg> 467 #config 468 { "elements": ["svg"] } 469 #document 470 471 #data 472 <div><svg></svg></div> 473 #config 474 { "elements": ["div", "svg"] } 475 #document 476 | <div> 477 478 #data 479 <div>balabala<dl>test</dl></div> 480 #config 481 { "removeElements": ["I", "DL"] } 482 #document 483 | <div> 484 | "balabala" 485 | <dl> 486 | "test" 487 488 #data 489 <div>balabala<dl>test</dl></div> 490 #config 491 { "removeElements": ["i", "dl"] } 492 #document 493 | <div> 494 | "balabala" 495 496 #data 497 <DIV>balabala<DL>test</DL></DIV> 498 #config 499 { "removeElements": ["i", "dl"] } 500 #document 501 | <div> 502 | "balabala" 503 504 #data 505 <p id="test">Click.</p> 506 #config 507 { "removeAttributes": ["ID"] } 508 #document 509 | <p> 510 | id="test" 511 | "Click." 512 513 #data 514 <p ID="test">Click.</p> 515 #config 516 { "removeAttributes": ["ID"] } 517 #document 518 | <p> 519 | id="test" 520 | "Click." 521 522 #data 523 <p ID="test">Click.</p> 524 #config 525 { "removeAttributes": ["id"] } 526 #document 527 | <p> 528 | "Click." 529 530 #data 531 <div>balabala<i>test</i></div><test>t</test><custom-element>custom-element</custom-element> 532 #config 533 { "removeElements": [123, "test", "i", "custom-element"] } 534 #document 535 | <div> 536 | "balabala" 537 538 #data 539 <div>balabala<i>test</i></div><test>t</test><custom-element>custom-element</custom-element> 540 #config 541 { "replaceWithChildrenElements": [123, "test", "i", "custom-element"], 542 "elements": ["div"]} 543 #document 544 | <div> 545 | "balabala" 546 | "test" 547 | "t" 548 | "custom-element" 549 550 #data 551 <div>test<div>p</div>tt<p>div</p></div><test>test</test> 552 #config 553 { "elements": ["p", "test"], "replaceWithChildrenElements": ["div"] } 554 #document 555 | "test" 556 | "p" 557 | "tt" 558 | <p> 559 | "div" 560 | <test> 561 | "test" 562 563 #data 564 test<div>p</div>tt<p>div</p><test>test</test> 565 #config 566 { "elements": ["p", "test"], "replaceWithChildrenElements": ["div"] } 567 #document 568 | "test" 569 | "p" 570 | "tt" 571 | <p> 572 | "div" 573 | <test> 574 | "test" 575 576 #data 577 <div hello='1' world='2'><b hello='3' world='4'> 578 #config 579 { "elements": ["div", "b"], "attributes": ["hello", "world"] } 580 #document 581 | <div> 582 | hello="1" 583 | world="2" 584 | <b> 585 | hello="3" 586 | world="4" 587 588 #data 589 <div hello='1' world='2'><b hello='3' world='4'> 590 #config 591 { "elements": ["div", "b"], "removeAttributes": ["hello", "world"] } 592 #document 593 | <div> 594 | <b> 595 596 #data 597 <table><div><td> 598 #config 599 { "replaceWithChildrenElements": ["table"] } 600 #document 601 | <div> 602 | <tbody> 603 | <tr> 604 | <td> 605 606 #data 607 <template><div>Hello</div></template> 608 #config 609 {} 610 #document 611 | <template> 612 | content 613 | <div> 614 | "Hello" 615 616 #data 617 <template><div>Hello</div></template> 618 #config 619 { "elements": ["div"]} 620 #document 621 622 #data 623 <template><div>Hello</div></template> 624 #config 625 { "elements": ["template"]} 626 #document 627 | <template> 628 | content 629 630 #data 631 <template><div>Hello</div></template> 632 #config 633 { "elements": ["div", "template"]} 634 #document 635 | <template> 636 | content 637 | <div> 638 | "Hello" 639 640 #data 641 <template><div>Hello</div></template> 642 #config 643 { "elements": ["template"], "replaceWithChildrenElements": ["div"]} 644 #document 645 | <template> 646 | content 647 | "Hello" 648 649 #data 650 <a href="about:blank" rel="opener">Click.</a> 651 #document 652 | <a> 653 | href="about:blank" 654 | "Click."