Quiero incluir un archivo html que contenga una etiqueta de script como esta:
<script>$('#page-content').html('{% include "title.html" %}');</script>
título.html:
<script>document.title = "Hello World!"</script><p>Hello World!</p>
resultado:
<script>$('#page-content').html('<script>document.title = "Hello World!"</script><p>Hello World!</p>');</script>
Lamentablemente, el navegador no lo ejecutará correctamente debido a los múltiples conjuntos de etiquetas de secuencias de comandos y no estoy muy seguro de cómo resolverlo mejor.
Bueno, solo $.html no ejecutará los scripts adjuntos, pero javascript simple puede hacerlo.
// const content = `{% include 'title.html' %}`; const content = `<script>alert("foo")</script>`; const target = document.getElementById('page-content'); const range = document.createRange(); range.selectNode(target); const fragment = range.createContextualFragment(content); target.appendChild(fragment); // Here script is executed, "foo" pops up