Hago una solicitud ajax que inyecta un nodo de secuencia de comandos en mi cabeza o elemento del cuerpo como este:
window.addEventListener("DOMContentLoaded", () => { this._client.get('/getFragment', (responseText) => { const obj = JSON.parse(responseText); const scriptTag = document.createElement('template'); scriptTag.innerHTML = obj.fragment; document.body.appendChild(scriptTag.content); }); });El problema ahora es que la secuencia de comandos se inyecta en el DOM, pero como esta secuencia de comandos JS llama a otra URL externa, puedo ver en el monitor de red que la URL de la secuencia de comandos no se llama/ejecuta. ¿Cómo puedo asegurarme de que la etiqueta del script se ejecute después de que la inyecté en el DOM?
El fragmento que me gustaría inyectar es este:
<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/1f.js");</script>No estoy muy seguro de entender lo que está preguntando, pero creo que el problema es que está creando un elemento de template , y los navegadores generalmente no ejecutan el contenido de esos. Intente usar document.createElement('div') en su lugar.