Tengo una cadena que contiene una etiqueta de secuencia de script html que contiene algún código javascript. Recibo ese código de otro servidor a través de websocket .
Esa cadena contiene un código javascript que realiza algunos cambios en el DOM. entonces quiero evaluar esa cadena. Sé que la función eval() evalúa el código JavaScript representado como una cadena. Pero cuando evalúo esa cadena, obtengo un error de escape.
¿Hay alguna forma de agregar una cadena con código javascript en el DOM y realizar la evaluación de ese fragmento de código en el momento de su inserción en el DOM?
Entonces considere que tengo una chain variable como la siguiente
let chain = "<script>console.log('test')</script>";Quiero agregar esa cadena que es una representación de una etiqueta de script html en el DOM y quiero que se evalúe al mismo tiempo que se inserta en el DOM. Después de eso, esperaré iniciar sesión en la consola del navegador.
Creo que esto es lo que estás buscando.
Nota : Tuve que cambiar las etiquetas de cierre en la cadena de </script> a <\/script> para que el fragmento de código funcionara en SO:
let chain = "<script>console.log('Test')<\/script>"; let code = chain.replace('<script>','').replace('<\/script>','') let script = document.createElement('script') script.onload = eval(code) document.body.appendChild(script);Si solo desea realizar una eval en la cadena que está recibiendo, debe eliminar las etiquetas y eval la nueva cadena.
El siguiente fragmento debería funcionar bien para sus requisitos básicos. Solo recuerde que no se recomienda eval .
let chain = "<script>console.log('test')<\/script>"; let code = chain.replaceAll(/<\/?[^<>]*>/g, ""); console.log(chain, code); eval(code);