[英]How do I remove script element from the DOM in UI5?
我正在尝试从 UI5 中的 DOM 中删除脚本标记。 这是我的代码,lang 是可以更改的函数的参数。
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);
}
当 something.remove() 发生时,脚本标签的功能仍然显示在网页中。 当代码执行document.body.appendChild(something);
时,我也会出错document.body.appendChild(something);
预期的结果是,当某些内容存在并且 lang 更改时脚本标记将从 dom 中删除,并在某些内容更改回 en 时添加回来。
预期的结果是,当某些内容存在并且 lang 更改时脚本标记将从 dom 中删除,并在某些内容更改回 en 时添加回来。
您的代码可能会或可能不会删除script
元素。 您无法判断,因为删除script
元素对script
元素加载到 JavaScript 环境中的代码没有影响。 您不能“卸载”已加载的代码。
script
元素只是一个代码进入的盒子。一旦这个盒子将代码交付给 JavaScript 引擎,引擎就会运行它并保留它创建的任何东西(尽管在某个阶段可以垃圾收集没有任何引用的对象)。 不再需要盒子,移除它也没什么区别。
这是浏览器中的一个更简单的示例:
<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>
您无法删除script
元素加载的代码。
您可以编写代码,以便您可以禁用script
元素加载的任何代码,并在以后通过使用标志或取消注册/重新注册事件处理程序等重新启用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.