Estoy tratando de eliminar una etiqueta de script del DOM en UI5. Aquí está mi código y lang es un parámetro para la función que puede cambiar.
var something= document.getElementById("id"); if (lang.toLowerCase().indexOf("en") === 0 && !something) { var s = document.createElement("script"); s.setAttribute(...); s.setAttribute(...); document.body.appendChild(s); s.setAttribute(...); s.setAttribute(...); }else if(lang.toLowerCase().indexOf("en") !== 0 && something){ something.remove(); }else{ document.body.appendChild(something); } Cada vez que sucede algo.remove(), la funcionalidad de la etiqueta del script aún se muestra en la página web. También recibo un error cuando el código document.body.appendChild(something);
El resultado esperado es que la etiqueta del script se eliminará del dom cuando exista algo y se cambie lang y se vuelva a agregar cuando se vuelva a cambiar a en.
El resultado esperado es que la etiqueta del script se eliminará del dom cuando exista algo y se cambie lang y se vuelva a agregar cuando se vuelva a cambiar a en.
Su código puede o no estar eliminando el elemento de secuencia de script . No podría saberlo porque eliminar el elemento de secuencia de script no tiene ningún efecto en el código que el elemento de secuencia de script cargó en el entorno de JavaScript. No puede "descargar" el código que ha sido cargado.
El elemento script es solo un cuadro en el que viene el código. Una vez que el cuadro ha entregado el código al motor de JavaScript, el motor lo ejecuta y conserva todo lo que crea (aunque los objetos a los que no hace referencia pueden ser basura recolectada en algún momento). La caja ya no es necesaria y quitarla no hace ninguna diferencia.
Aquí hay un ejemplo más simple en el navegador:
<input id="btn" type="button" value="Click Me"> <script id="the-script"> function clickHandler() { console.log("clickhandler called"); const script = document.getElementById("the-script"); if (script) { script.remove(); console.log("First click, removed `script` element"); } } document.getElementById("btn").addEventListener("click", clickHandler); </script> No puede eliminar el código que cargó el elemento del script .
Puede escribir el código para que pueda deshabilitar cualquier código que cargue el elemento de secuencia de script y volver a habilitarlo más tarde, mediante el uso de una bandera o los controladores de eventos anulando el registro/reinscribiendo, etc.