transformToFragment.tentative.window.js (1037B)
1 const cases = { 2 internal: '<script>window.internalScript = true;</script>', 3 external: '<script src="externalScript.js"></script>', 4 }; 5 6 const loaded = new Promise(resolve => { 7 window.addEventListener('load', resolve); 8 }); 9 10 Object.entries(cases).forEach(([k, v]) => { 11 const xsltSrc = `<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 12 <xsl:output method="html" encoding="utf-8" version="5"/> 13 <xsl:template match="/"> 14 <section> 15 ${v} 16 </section> 17 </xsl:template> 18 </xsl:stylesheet>`; 19 20 const processor = new XSLTProcessor(); 21 const parser = new DOMParser(); 22 processor.importStylesheet( 23 parser.parseFromString(xsltSrc, 'application/xml') 24 ); 25 document.body.appendChild( 26 processor.transformToFragment( 27 parser.parseFromString('<x/>', 'application/xml'), 28 document 29 ) 30 ); 31 32 promise_test(async () => { 33 await loaded; 34 assert_true( 35 window[`${k}Script`], 36 'script element from XSLTProcessor.transformToFragment() is evaluated' 37 ); 38 }, `${k} script`); 39 })