繁体   English   中英

如何从 UI5 中的 DOM 中删除脚本元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM